一、删除单个元素
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]