我正在寻找一种方法来从另一个列表中删除列表中的所有值。
如下所示:
a = range(1,10)
a.remove([2,3,7])
print a
a = [1,4,5,6,8,9]
发布于 2010-03-25 19:22:23
>>> a = range(1, 10)
>>> [x for x in a if x not in [2, 3, 7]]
[1, 4, 5, 6, 8, 9]
发布于 2012-03-30 02:57:40
如果没有重复的值,可以使用set difference。
x = set(range(10))
y = x - set([2, 3, 7])
# y = set([0, 1, 4, 5, 6, 8, 9])
如果需要,然后转换回list。
发布于 2010-03-25 19:26:19
a = range(1,10)
itemsToRemove = set([2, 3, 7])
b = filter(lambda x: x not in itemsToRemove, a)
或
b = [x for x in a if x not in itemsToRemove]
不要在lambda
或create内部创建set。如果你这样做了,它将在每次迭代中被重新创建,完全失去了使用集合的意义。
https://stackoverflow.com/questions/2514961
复制相似问题