您的位置:

Python List删除操作详解

一、删除单个元素

Python的list数据类型提供了多种删除单个元素的方式。其中,pop()方法是最常用的一种方式。该方法可以删除list中指定下标的元素,如果不指定下标,则默认删除最后一个元素。使用pop()方法删除元素后,该方法会返回被删除的元素,所以我们可以将返回值存储起来以备后续使用。

a = [1, 2, 3, 4]
print(a.pop())  # 输出 4,并删除a中最后一个元素
print(a)        # 输出 [1, 2, 3]

除了pop()方法,还有一种删除单个元素的方式是使用del语句。该语句可以删除list中指定下标的元素,也可以删除从下标开始到结束的一段元素。使用del语句删除元素后,没有返回值。

a = [1, 2, 3, 4]
del a[1]        # 删除a中下标为1的元素,即2
print(a)        # 输出 [1, 3, 4]

b = [1, 2, 3, 4]
del b[1:3]      # 删除a中下标为1和2的元素,即2和3
print(b)        # 输出 [1, 4]

二、删除多个元素

删除多个元素有两种方式,一种是使用del语句,一种是使用切片(slice)。

使用del语句删除多个元素的时候,需要使用for循环遍历要删除的元素下标,一个一个删除。

a = [1, 2, 3, 4, 5, 6]
to_remove = [1, 3, 5]
for i in to_remove:
    del a[i]    # 删除下标为1、3、5的元素
print(a)        # 输出 [1, 3, 5]

使用切片删除多个元素的时候,可以使用Python的slice功能,直接在list中传入slice对象,即可删除指定的元素。

a = [1, 2, 3, 4, 5, 6]
to_remove = [1, 3, 5]
a = [i for j, i in enumerate(a) if j not in to_remove]
print(a)        # 输出 [1, 3, 5]

三、删除满足条件的所有元素

要删除满足条件的所有元素,可以使用Python的filter函数和lambda表达式。filter函数会返回一个新的list对象,其中只包含满足条件的元素。

a = [1, 2, 3, 4, 5, 6]
b = list(filter(lambda x: x%2==0, a))    # 删除a中所有偶数元素
print(b)        # 输出 [2, 4, 6]

当然,我们也可以使用for循环遍历要删除的元素下标,一个一个删除。

a = [1, 2, 3, 4, 5, 6]
to_remove = [1, 3, 5]
for i in reversed(to_remove):
    del a[i]
print(a)        # 输出 [1, 3, 5]