Python 列表基础
列表(list)是 Python 中最常用的数据结构之一,它是一种有序且可变的集合。列表中允许存在重复元素,也支持混合数据类型。
创建列表
空列表
在 Python 中,使用方括号 [] 或 list() 函数均可创建空列表。
a = []
print(type(a)) # <class 'list'>
print(a) # []
b = list()
print(type(b)) # <class 'list'>
print(b) # []
非空列表
初始化时可直接设置初始值,列表会自动推断类型。
c = [1, 3, 2.2, 'Jinger']
print(type(c)) # <class 'list'>
print(c) # [1, 3, 2.2, 'Jinger']
列表操作
新增元素
append 方法
append 用于在列表末尾追加单个元素。注意它只接受一个参数,如果是多个元素需先打包成列表。
lst = [1, 3.0, 2.2]
lst.append('Jinger')
print(lst) # [1, 3.0, 2.2, 'Jinger']
insert 方法
insert(index, element) 可在指定索引位置插入元素,支持负索引。若索引超出范围,则根据正负逻辑处理:正索引过大插末尾,负索引过小插首部。
lst = [1, 3.0, 2.2]
lst.insert(1, 'Jinger')
print(lst) # [1, 'Jinger', 3.0, 2.2]
lst.insert(-1, 'Hello')
print(lst) # [1, 'Jinger', 3.0, 'Hello', 2.2]
# 越界示例
lst.insert(100, 'End')
print(lst) # [..., 'End']
提示:负索引从后往前计数,
-1代表最后一个元素。理解这一点能避免很多边界错误。
删除元素
pop 方法
pop() 默认移除并返回列表末尾元素,也可指定索引删除任意位置元素。
lst = [1, 3.0, 2.2]
val = lst.pop() # 移除 2.2
print(lst) # [1, 3.0]
val = lst.pop(1) # 移除 3.0
print(lst) # [1]
remove 方法
remove(value) 删除第一个匹配的元素。若列表中有重复值,仅删除首次出现项。
lst = [1, 3.0, 2.2, 3.0]
lst.remove(3.0)
print(lst) # [1, 2.2, 3.0]
查找与修改
in / not in 操作符
判断元素是否存在,返回布尔值。
lst = [1, 3.0, 2.2, 3.0]
print(3 in lst) # False (3 != 3.0)
print(3.0 in lst) # True
index 方法
获取元素首次出现的索引。
lst = [1, 3.0, 2.2, 3.0]
print(lst.index(2.2)) # 2
下标访问与修改
通过 [] 可直接读取或修改元素,同样支持负索引。
lst = [1, 3.0, 2.2, 3.0]
print(lst[3]) # 3.0
lst[3] = 4 # 修改为整数
print(lst) # [1, 3.0, 2.2, 4]
遍历列表
for 循环
直接遍历元素时,修改循环变量不会影响原列表,因为变量只是值的副本。
lst = [1, 3.0, 2.2, 3.0]
for item in lst:
item += 1
print(lst) # [1, 3.0, 2.2, 3.0] (未改变)
若要修改原列表,需遍历索引或使用 enumerate。
lst = [1, 3.0, 2.2, 3.0]
for i in range(len(lst)):
lst[i] += 1
print(lst) # [2, 4.0, 3.2, 4.0]
while 循环
配合索引手动控制遍历过程。
lst = [1, 3.0, 2.2, 3.0]
i = 0
while i < len(lst):
lst[i] += 1
i += 1
print(lst) # [2, 4.0, 3.2, 4.0]
切片提取
切片语法 [start:stop:step] 非常强大,遵循左闭右开原则。
基础切片
lst = [1, 3.0, 2.2, 3.0]
print(lst[1:2]) # [3.0]
print(lst[0:2]) # [1, 3.0]
省略边界
省略 start 默认为开头,省略 stop 默认为结尾。
lst = [1, 3.0, 2.2, 3.0]
print(lst[1:]) # [3.0, 2.2, 3.0]
print(lst[:2]) # [1, 3.0]
print(lst[:]) # 完整复制
步长与负索引
步长 step 可为负数,实现反向切片。
lst = [1, 3.1, 2.2, 3.0]
print(lst[::-1]) # 反转:[3.0, 2.2, 3.1, 1]
print(lst[3:0:-1]) # [3.0, 2.2, 3.1]
print(lst[-1::-2]) # [3.0, 3.1]
注意:切片不会抛出索引越界异常,而是尽可能返回有效部分。
lst = [1, 3.0, 2.2, 3.0]
print(lst[2:100]) # [2.2, 3.0]
列表拼接
+ 与 +=
+ 生成新列表,+= 就地修改。
a = [1, 3.1]
b = [2.2, 'Jinger']
c = a + b # 新列表
print(c) # [1, 3.1, 2.2, 'Jinger']
b += a # 原地扩展
print(b) # [2.2, 'Jinger', 1, 3.1]
extend 方法
extend 将可迭代对象内容逐个加入,性能优于 +=,因为它避免了临时对象的创建。
a = [1, 3.1]
b = [2.2, 'Jinger']
b.extend(a)
print(b) # [2.2, 'Jinger', 1, 3.1]
常用接口速查
| 功能 | 方式 |
|---|---|
| 子列表提取 | this_list[start:stop:step] |
| 成员检查 | in / not in |
| 列表拼接 | + / += |
| 长度获取 | len() |
核心成员函数
| 方法 | 功能说明 |
|---|---|
copy | 浅拷贝列表 |
clear | 清空所有元素 |
append | 末尾添加单元素 |
insert | 指定位置插入 |
extend | 批量追加可迭代对象 |
pop | 弹出末尾或指定索引元素 |
remove | 删除首个匹配元素 |
index | 查找元素首次索引 |
count | 统计元素出现次数 |
reverse | 原地反转顺序 |
sort | 原地排序 |
总结
掌握列表的创建、增删改查及切片技巧是 Python 编程的基础。在实际开发中,优先使用 extend 进行拼接以提升性能,利用切片快速截取数据段,并注意负索引与可变性的细节,能有效减少常见 Bug。


