在一条语句中从Python列表中删除多个项

在python中,我知道如何从列表中删除项

item_list=['item',5'foo',3.14,True]
项目列表。删除(“项目”)
项目列表。删除(5)

上述代码从项目列表中删除值5和“项目”。
但是当有很多东西要删除时,我必须写很多行

项目列表。删除(“要删除的内容”)

如果我知道要删除的内容的索引,我将使用:

删除项目列表[x]

其中x是我要删除的项的索引

如果我知道要删除的所有数字的索引,我将使用某种循环来删除索引处的项

但是如果我不知道我要删除的项目的索引怎么办

我尝试了item\u list.remove('item',foo'),但我得到一个错误,即remove只接受一个参数

有没有办法在一条语句中从列表中删除多个项目

另外,我使用了delremove。有人能解释这两者之间的区别吗,还是它们是一样的

谢谢

在Python中,创建新对象通常比修改现有对象要好:

item_list=['item',5'foo',3.14,True]
项目清单=[e代表项目清单中的e,如果e不在('项目',5)]

这相当于:

item_list=['item',5'foo',3.14,True]
新列表=[]
对于项目清单中的e:
如果e不在('项目',5):
新列表。追加(e)
项目列表=新列表

如果筛选出的值列表很大(这里,('item',5)是一组小元素),使用会更快,因为中的操作平均时间复杂度为O(1)。最好先构建要删除的iterable,这样就不会在列表的每次迭代中都创建它:

不需要的={'item',5}
item_list=[e代表item_list中的e,如果e不是多余的]

如果内存不便宜,bloom过滤器也是一个很好的解决方案

发表评论