del按索引删除元素且不返回值,remove()按值删除首个匹配项并抛出valueerror;二者语法、行为及适用场景均不同。

Python中删除列表元素,del 和 remove() 完全不是一回事:一个按位置操作,一个按值匹配;一个不返回值,一个只删首次出现的指定值。
del:通过索引(位置)删除,不关心内容
del 是语句,直接从内存中移除指定索引处的元素。它不返回任何值(返回 None),也不能用于不存在的索引,否则抛出 IndexError。
- 语法是
del list_name[index]或切片形式del list_name[start:end] - 支持负数索引,比如
del my_list[-1]删除最后一个元素 - 一次可删多个:如
del my_list[1:4]删除索引 1、2、3 处的三个元素 - 不能写成
a = del my_list[0]—— 因为 del 不是函数,没有返回值
remove():通过值删除,只删第一个匹配项
remove() 是列表对象的方法,接收一个参数(要删除的值),在列表中从前向后查找,删掉第一次出现的位置。如果找不到该值,会抛出 ValueError。
- 语法是
my_list.remove(value) - 不支持通配或条件,也不接受索引;只认具体值(注意类型和大小写)
- 例如
[1, 2, 2, 3].remove(2)后变成[1, 2, 3],仅删第一个 2 - 若确定要删所有相同值,需配合循环或列表推导式,如
my_list = [x for x in my_list if x != value]
其他常用删除方式对比(补充参考)
除了 del 和 remove,还有几个高频操作容易混淆:
立即学习“Python免费学习笔记(深入)”;
- pop():按索引删除并返回被删元素(默认删末尾),适合“取走并用”场景
-
clear():清空整个列表,等价于
del my_list[:] -
切片赋值:如
my_list[2:5] = [],效果类似 del 切片,但更隐式
选哪个?看你的删除依据
想删第 3 个元素?用 del my_list[2]。
知道要删数字 7,但不确定在哪?用 my_list.remove(7)。
要删掉所有 7?别用 remove 循环(可能跳过),改用列表推导或 while + remove。










