在 Python 编程中,列表(List)是最常用的数据结构之一。删除列表元素是高频操作,但方法众多,容易混淆。今天用实例带你彻底掌握!
方法一:del 语句 —— 按索引删除
特点:根据索引位置删除,支持删除单个元素或切片。
fruits = ['苹果', '香蕉', '橙子', '葡萄', '西瓜']
# 删除索引为 1 的元素(香蕉)
del fruits[1]
print(fruits) # 输出: ['苹果', '橙子', '葡萄', '西瓜']
# 删除索引 1 到 3 的元素(切片删除)
fruits = ['苹果', '香蕉', '橙子', '葡萄', '西瓜']
del fruits[1:3]
print(fruits) # 输出: ['苹果', '葡萄', '西瓜']
⚠️ 注意:索引越界会报错 IndexError
方法二:pop() —— 弹出元素(可获取被删值)
特点:删除指定索引元素,并返回该元素的值。默认删除最后一个。
colors = ['红', '绿', '蓝', '黄']
# 删除最后一个元素,并获取它
last = colors.pop()
print(f"被删除的是: {last}") # 输出: 被删除的是: 黄
print(f"剩余列表: {colors}") # 输出: 剩余列表: ['红', '绿', '蓝']
# 删除索引为 1 的元素
colors = ['红', '绿', '蓝', '黄']
removed = colors.pop(1)
print(f"被删除的是: {removed}") # 输出: 被删除的是: 绿
💡 适用场景:需要知道被删除了什么,比如实现"撤销"功能。
方法三:remove() —— 按值删除
特点:根据元素值删除第一个匹配项,不返回被删值。
scores = [85, 90, 78, 90, 88]
# 删除第一个值为 90 的元素
scores.remove(90)
print(scores) # 输出: [85, 78, 90, 88]
# 删除不存在的值会报错
scores.remove(100) # ❌ ValueError: list.remove(x): x not in list
✅ 安全写法:先判断是否存在
if100in scores:
scores.remove(100)
方法四:列表推导式 —— 批量删除/过滤
特点:根据条件保留元素,本质上是创建新列表。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 删除所有偶数,只保留奇数
odd_numbers = [x for x in numbers if x % 2 != 0]
print(odd_numbers) # 输出: [1, 3, 5, 7, 9]
# 删除包含特定字符的字符串
names = ['张三', '李四', '张五', '王六']
filtered = [name for name in names ifnot name.startswith('张')]
print(filtered) # 输出: ['李四', '王六']
🔥 优势:代码简洁,适合批量过滤场景。
方法五:clear() —— 清空整个列表
特点:一键清空,保留空列表。
tasks = ['写作业', '洗衣服', '买菜']
tasks.clear()
print(tasks) # 输出: []
📊 方法对比速查表
| | | | |
|---|
del list[i] | | | | |
pop(i) | | | | |
remove(x) | | | | |
| | | | |
clear() | | | | |
🎯 实战案例:删除列表中的重复元素
# 保留顺序去重
original = [1, 2, 2, 3, 3, 3, 4]
unique = []
for x in original:
if x notin unique:
unique.append(x)
print(unique) # 输出: [1, 2, 3, 4]
# 一行代码版(Python 3.7+ 字典有序)
unique = list(dict.fromkeys(original))
print(unique) # 输出: [1, 2, 3, 4]
💬 总结
- 知道值 → 用
remove()(记得判断存在性)
掌握这 5 种方法,列表删除操作再也不迷茫!建议收藏备用 🌟