一、列表常用方法(增删改查)
1. 添加元素(增)
① append():在列表末尾添加一个元素
语法:列表.append(元素)
特点:修改原列表,无返回值(返回 None)。
lst = [10, 20, 30]
lst.append(40)
print(lst) # [10, 20, 30, 40]
# 可以添加任意类型
lst.append("Python")
lst.append([1, 2]) # 嵌套列表
print(lst) # [10, 20, 30, 40, 'Python', [1, 2]]
② extend():在列表末尾添加多个元素(可迭代对象)
语法:列表.extend(可迭代对象)
特点:把另一个列表/字符串/元组等“拆开来”添加进去。
lst = [10, 20]
lst.extend([30, 40]) # 传入列表
print(lst) # [10, 20, 30, 40]
lst.extend("ab") # 传入字符串(拆成字符)
print(lst) # [10, 20, 30, 40, 'a', 'b']
对比 append vs extend:
a = [1, 2]
a.append([3, 4]) # 整体添加
print(a) # [1, 2, [3, 4]]
b = [1, 2]
b.extend([3, 4]) # 拆分添加
print(b) # [1, 2, 3, 4]
③ insert():在指定位置插入元素
语法:列表.insert(索引, 元素)
特点:指定索引处插入,后面元素依次后移。
lst = [10, 30, 40]
lst.insert(1, 20) # 在索引1的位置插入20
print(lst) # [10, 20, 30, 40]
# 插入到开头
lst.insert(0, 0)
print(lst) # [0, 10, 20, 30, 40]
# 插入到末尾(效果等同于append)
lst.insert(len(lst), 50)
print(lst) # [0, 10, 20, 30, 40, 50]
2. 删除元素(删)
① remove():删除第一个匹配的元素
语法:列表.remove(元素)
特点:
lst = [10, 20, 30, 20]
lst.remove(20) # 删除第一个20
print(lst) # [10, 30, 20]
② pop():删除并返回指定索引的元素
语法:列表.pop(索引=-1)
特点:
lst = [10, 20, 30]
x = lst.pop() # 删除最后一个30
print(x) # 30
print(lst) # [10, 20]
y = lst.pop(0) # 删除索引0的10
print(y) # 10
print(lst) # [20]
③ clear():清空列表
语法:列表.clear()
特点:删除所有元素,留下空列表 []。
lst = [1, 2, 3]
lst.clear()
print(lst) # []
3. 修改元素(改)
直接通过索引赋值修改。
lst = [10, 20, 30]
lst[1] = 200
print(lst) # [10, 200, 30]
4. 查找与排序(查与排)
① index():查找元素第一次出现的索引
语法:列表.index(元素, 开始索引=0, 结束索引=末尾)
返回值:索引值。
不存在报错ValueError。
lst = [10, 20, 30, 20]
print(lst.index(20)) # 1
print(lst.index(20, 2)) # 3(从索引2开始找)
② count():统计元素出现次数
lst = [1, 2, 2, 3, 2]
print(lst.count(2)) # 3
③ sort():排序(修改原列表)
语法:列表.sort(key=None, reverse=False)
参数:
- •
key:指定排序规则的函数(如 key=len 按长度排序)。 - •
reverse:True 降序,False 升序(默认)。
lst = [3, 1, 4, 2]
lst.sort() # 升序
print(lst) # [1, 2, 3, 4]
lst.sort(reverse=True) # 降序
print(lst) # [4, 3, 2, 1]
# 按字符串长度排序
words = ["apple", "banana", "cherry"]
words.sort(key=len)
print(words) # ['apple', 'cherry', 'banana']
④ reverse():反转列表(修改原列表)
语法:列表.reverse()
lst = [1, 2, 3]
lst.reverse()
print(lst) # [3, 2, 1]
二、列表推导式(List Comprehension)
1. 什么是列表推导式?
一种简洁创建、处理列表的方式。
语法:[表达式 for 变量 in 可迭代对象 if 条件]
优点:
2. 基础语法
① 基础循环
# 普通写法
lst = []
for i inrange(5):
lst.append(i)
print(lst) # [0, 1, 2, 3, 4]
# 列表推导式
lst = [i for i inrange(5)]
print(lst) # [0, 1, 2, 3, 4]
② 带表达式
# 生成 0-9 的平方
squares = [x**2for x inrange(10)]
print(squares) # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
③ 带条件判断
# 筛选 0-9 中的偶数
even_numbers = [x for x inrange(10) if x % 2 == 0]
print(even_numbers) # [0, 2, 4, 6, 8]
④ 多重循环(嵌套)
# 普通写法
result = []
for i inrange(1, 4):
for j inrange(1, 4):
result.append((i, j))
print(result) # [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
# 列表推导式
result = [(i, j) for i inrange(1, 4) for j inrange(1, 4)]
print(result) # 同上
⑤ 带 if-else 表达式
# 偶数变平方,奇数变自身
nums = [1, 2, 3, 4, 5]
new_nums = [x**2if x % 2 == 0else x for x in nums]
print(new_nums) # [1, 4, 3, 16, 5]
三、易错点总结
- •
append 添加整体,extend 拆分添加。
- 2.
remove 按值删,pop 按索引删并返回。 - 3. 切片
lst[:] 是复制,lst = [] 是重新赋值。 - 4. 列表推导式复杂逻辑可读性差,简单逻辑用它,复杂逻辑用
for 循环。 - 5.
sort() 修改原列表,sorted() 函数返回新列表,原列表不变。
📚 综合练习题(带详细讲解)
练习1:append vs extend
写出运行结果:
a = [1, 2]
a.append([3, 4])
print(a)
b = [1, 2]
b.extend([3, 4])
print(b)
答案:
[1, 2, [3, 4]]
[1, 2, 3, 4]
讲解:append 整体添加,extend 拆分添加。
练习2:列表推导式
用列表推导式生成 1-10 中能被 3 整除的数的平方列表。
result = [x**2for x inrange(1, 11) if x % 3 == 0]
print(result)
答案:[9, 36, 81]
讲解:遍历 1-10,筛选能被3整除的,计算平方。
练习3:sort 与 reverse
写出运行结果:
lst = [3, 1, 4, 2]
lst.sort(reverse=True)
print(lst)
lst.reverse()
print(lst)
答案:
[4, 3, 2, 1]
[1, 2, 3, 4]
讲解:先降序排序,再反转列表。
📝 本章超级总结
列表常用方法
| | |
append(x) | | |
extend(iter) | | |
insert(i, x) | | |
remove(x) | | |
pop(i=-1) | | |
clear() | | |
sort() | | |
reverse() | | |
列表推导式
- • 带条件:
[x for x in iter if cond] - • 带表达式:
[func(x) for x in iter] - • 嵌套:
[x for i in iter1 for x in iter2]