1.列表类型和操作
1.1 列表类型
· 列表 (list) 是包含 0个或多个元素 的 有序集合。
· 列表属于 序列类型。
· 与元组不同,列表的 长度 和 内容 都是 可以改变 的。可以 自由地 在列表中 增加、删除或修改 元素。
· 列表 没有长度限制。
· 列表中的 元素类型可以各不相同,使用非常 灵活。
· 由于列表是序列类型,它也支持:
o 成员关系操作符 (in)
o 长度计算函数 (len())
o 切片操作 ([])
· 列表可以同时使用 正向递增序号 (从0开始) 和 反向递减序号 (从-1开始)。
· 可以使用标准比较操作符 (<, <=, ==, !=, >=, >) 比较列表。列表比较是 逐个元素 进行的。
· 列表用 方括号 [] 表示。
· 可以通过 list() 函数 将元组、字符串等其他类型的数据转换成列表。
· 直接使用 list() 函数(不传参数)会 返回一个空列表。
· 列表必须通过 实际赋值数据 来创建。简单地将一个列表变量赋值给另一个变量(如 new_list = old_list)并不会创建一个新的列表对象,这两个变量会指向内存中的同一个列表。
1.2 列表类型的操作
· 列表是序列类型,因此序列类型的操作符和函数都可以用于列表。
· 由于列表是 可变的,它还有以下 14个常用方法 (注意:del 是语句,不是方法):
操作或方法 | 描述 |
ls[i] = x | 将列表 ls 中 第 i 个位置的元素 替换为 x。 |
ls[i:j:k] = lt | 用列表 lt 中的元素 替换 ls 中切片 [i:j:k] 对应的子列表。 |
del ls[i] | 删除 列表 ls 中 第 i 个位置的元素。 |
del ls[i:j:k] | 删除 列表 ls 中 从 i 到 j (步长 k) 切片对应的元素。 |
ls += lt | 原地更新 列表 ls,将列表 lt 中的 所有元素添加到 ls 末尾。 |
ls *= n | 原地更新 列表 ls,将其中的元素 重复 n 次。 |
ls.append(x) | 在列表 ls 的 末尾添加 一个元素 x。 |
ls.clear() | 删除 列表 ls 中的 所有元素,使其变为空列表。 |
ls.copy() | 创建并返回 列表 ls 的一个 浅拷贝副本 (新列表)。 |
ls.insert(i, x) | 在列表 ls 的 第 i 个位置之前插入 元素 x。 |
ls.pop(i) | 取出并返回 列表 ls 中 第 i 个位置的元素,同时 从列表中删除它。省略 i 时默认弹出最后一个元素 (i=-1)。 |
ls.remove(x) | 删除 列表 ls 中 第一个出现的元素 x。如果 x 不存在会引发错误。 |
ls.reverse() | 原地 将列表 ls 中的元素 顺序反转。 |
ls.sort() | 原地 对列表 ls 中的元素进行 排序 (默认升序)。 |
· 注意: 当使用切片赋值 (ls[i:j:k] = lt) 来改变列表时:
o Python 不要求 右侧的列表 lt 的长度必须和左侧切片的长度相同。
o 遵循 “多增少减” 原则:如果用 更长的列表 lt 赋值,原列表 ls 会 在切片位置插入更多元素;如果用 更短的列表 lt 赋值,原列表 ls 会 在切片位置删除元素(被替换的部分变短了)。
o 这实际上提供了一种 插入或删除 列表中 连续一段元素 的方法。
· 与元组一样,可以使用 for 循环 遍历 列表中的所有元素:
for <变量名> in <列表名>:
<语句块> # 在语句块中可以使用<变量名>访问当前元素
总结:
列表 (list) 是一个 极其灵活 的数据结构。它能处理 任意长度、混合类型 的数据,并提供了 丰富的基础操作和方法。当你的程序需要管理 一组相关的数据 时,列表通常是 首选 的数据类型,因为它支持方便的 增、删、改 操作。
