概述
列表(list)是 Python 中最常用的数据结构之一,它是一个有序且可变的对象。列表中允许存在重复元素,也支持混合类型的数据存储。理解列表的操作是掌握 Python 编程的基础。
创建列表
初始化列表主要有两种方式:使用方括号 [] 或内置函数 list()。
1. 创建空列表
a = []
print(type(a)) # <class 'list'>
print(a) # []
使用 list() 函数同样可以创建一个空列表:
a = list()
print(type(a)) # <class 'list'>
print(a) # []
2. 创建非空列表
创建时可以直接设置初始值,列表能容纳不同类型的元素:
a = [1, 3, 2.2, 'Jinger']
print(type(a)) # <class 'list'>
print(a) # [1, 3, 2.2, 'Jinger']
操作列表
1. 新增列表元素
append 方法
append 方法用于在列表末尾追加单个元素。注意它只接受一个参数,如果传入的是列表,整个列表会被当作一个元素添加。
a = [1, 3.0, 2.2]
a.append('Jinger')
print(type(a)) # <class 'list'>
print(a) # [1, 3.0, 2.2, 'Jinger']
insert 方法
insert 允许在指定下标位置插入元素,支持负索引。如果指定的下标超出范围,它会尝试根据正负逻辑调整插入位置。
a = [1, 3.0, 2.2]
a.insert(1, 'Jinger')
print(a) # [1, 'Jinger', 3.0, 2.2]
a.insert(-1, 'Hello')
print(a) # [1, 'Jinger', 3.0, 'Hello', 2.2]
注意:负索引从后往前计数,
-1代表最后一个元素。若指定下标过大(如100),元素会追加到末尾;若为过小的负数,则可能插在首部。
2. 删除列表元素
pop 方法
pop 默认删除并返回列表末尾元素,也可指定下标删除特定位置的元素。
a = [1, 3.0, 2.2]
a.pop() # 删除末尾,返回 2.2
print(a) # [1, 3.0]
a.pop(1) # 删除下标 1 的元素
print(a) # [1]
remove 方法
remove 根据值删除元素,仅删除第一次出现的匹配项。
a = [1, 3.0, 2.2, 3.0]
a.remove(3.0)
print(a) # [1, 2.2, 3.0] # 第二个 3.0 保留
3. 查找列表元素
in / not in 操作符
判断元素是否存在于列表中,返回布尔值。
a = [1, 3.0, 2.2, 3.0]
print(3 in a) # True
print(3 not in a) # False
index 方法
获取元素首次出现的下标。
a = [1, 3.0, 2.2, 3.0]
print(a.index(2.2)) # 2
下标访问
直接使用 [] 访问元素,支持负索引。
a = [1, 3.0, 2.2, 3.0]
print(a[3]) # 3.0
4. 修改列表元素
通过下标直接赋值即可修改内容。
a = [1, 3.0, 2.2, 3.0]
a[3] = 4
print(a) # [1, 3.0, 2.2, 4]
5. 遍历列表元素
for 循环
最自然的遍历方式,但直接修改变量不会影响原列表。
a = [1, 3.0, 2.2, 3.0]
for item in a:
item += 1
print(item) # 4.0
print(a) # [1, 3.0, 2.2, 3.0] # 原列表未变
若要修改原列表,需遍历下标:
a = [1, 3.0, 2.2, 3.0]
n = len(a)
for i in range(n):
a[i] += 1
print(a) # [2, 4.0, 3.2, 4.0]
while 循环
通过手动控制下标实现遍历。
a = [1, 3.0, 2.2, 3.0]
n = len(a)
i = 0
while i < n:
a[i] += 1
i += 1
print(a) # [2, 4.0, 3.2, 4.0]
6. 子列表提取(切片)
切片是处理列表数据的高频操作,语法为 [start:stop:step]。
基础切片
左闭右开区间,即包含 start 不包含 stop。
a = [1, 3.0, 2.2, 3.0]
b = a[1:2] # [3.0]
c = a[0:2] # [1, 3.0]
d = a[0:3] # [1, 3.0, 2.2]
边界省略
起始或结束下标可省略,默认为列表首尾。
a = [1, 3.0, 2.2, 3.0]
c = a[1:] # [3.0, 2.2, 3.0]
d = a[:2] # [1, 3.0]
e = a[:] # 复制整个列表
步长设置
第三个参数控制步长,负数表示反向。
a = [1, 3.0, 2.2, 3.0]
b = a[0:3:2] # [1, 2.2]
反向切片常用于倒序:
a = [1, 3.1, 2.2, 3.0]
b = a[::-1] # [3.0, 2.2, 3.1, 1]
c = a[-1::-2] # [3.0, 3.1]
提示:切片越界不会报错,只会返回尽可能多的有效元素。
7. 拼接列表
+ 操作符
生成新列表,不修改原对象。
a = [1, 3.1, 2.2, 3.0]
b = [2.2, 'Jinger']
c = a + b
print(c) # [1, 3.1, 2.2, 3.0, 2.2, 'Jinger']
+= 操作符
就地扩展,等价于 extend。
a = [1, 3.1, 2.2, 3.0]
b = [2.2, 'Jinger']
b += a
print(b) # [2.2, 'Jinger', 1, 3.1, 2.2, 3.0]
extend 方法
推荐用于性能敏感场景,直接将另一个可迭代对象的元素加入当前列表。
a = [1, 3.1, 2.2, 3.0]
b = [2.2, 'Jinger']
b.extend(a)
print(b) # [2.2, 'Jinger', 1, 3.1, 2.2, 3.0]
性能说明:
b += a在某些实现中可能涉及临时对象创建,而extend通常更高效。
常用接口速查
| 功能 | 方式 |
|---|---|
| 子列表提取 | this_list[start:stop:step] |
| 成员检查 | in / not in |
| 列表拼接 | + / += |
| 长度获取 | len() |
| 方法 | 功能 |
|---|---|
copy | 浅拷贝列表 |
clear | 清空所有元素 |
append | 末尾添加单元素 |
insert | 指定位置插入 |
extend | 末尾批量添加 |
pop | 删除并返回指定元素 |
remove | 删除指定值(首个) |
index | 查找元素下标 |
count | 统计元素出现次数 |
reverse | 原地反转顺序 |
sort | 原地排序 |
总结
列表作为 Python 的核心容器,其灵活性和丰富的操作方法使其成为数据处理的首选工具。掌握增删改查、切片及拼接技巧,能显著提升编码效率。在实际开发中,建议优先使用 extend 而非 += 进行列表合并,并注意切片时的边界条件。


