在 python 中,我知道如何从列表中删除项目:
item_list = ['item', 5, 'foo', 3.14, True]
item_list.remove('item')
item_list.remove(5)
上面的代码从 item_list
中删除值 5 和 ‘item’。但是当有很多东西要删除时,我不得不写很多行:
item_list.remove("something_to_remove")
如果我知道要删除的内容的索引,我会使用:
del item_list[x]
其中 x 是我要删除的项目的索引。
如果我知道要删除的所有数字的索引,我将使用某种循环来 del
索引处的项目。
但是,如果我不知道要删除的项目的索引怎么办?
我试过 item_list.remove('item', 'foo')
,但我收到一条错误消息说 remove
只接受一个参数。
有没有办法在单个语句中从列表中删除多个项目?
PS 我用过 del
和 remove
。有人可以解释这两者之间的区别,还是相同?
原文由 RandomCoder 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Python 中,创建一个新对象,例如使用 列表理解 通常比修改现有对象更好:
…相当于:
如果过滤掉的值列表很大(这里,
('item', 5)
是一小部分元素),使用set
比in
操作 更快 平均 O(1) 时间复杂度。首先构建要删除的可迭代对象也是一个好主意,这样您就不会在列表推导的每次迭代中都创建它:如果内存不便宜, 布隆过滤器 也是一个很好的解决方案。