在Python中,创建新对象通常比修改现有对象要好:
item_list = ['item', 5, 'foo', 3.14, True]item_list = [e for e in item_list if e not in ('item', 5)]等效于:
item_list = ['item', 5, 'foo', 3.14, True]new_list = []for e in item_list: if e not in ('item', 5): new_list.append(e)item_list = new_list如果过滤出的值列表很大(这里
('item',5)是一小组元素),则使用aset会更快,因为该
in操作的平均时间复杂度为O(1)。最好先构建要删除的可迭代对象,这样就不必在列表理解的每次迭代中都创建它:
unwanted = {'item', 5}item_list = [e for e in item_list if e not in unwanted]一个布隆过滤器也是一个不错的解决方案,如果内存是不便宜。



