如何从列表中删除列表到新列表?所以从a中减去b来产生一个新的列表,c?
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,]
b = [3, 4, 5, 6]
c = []?
答案 0 :(得分:6)
要保持订购并加快使用套装会员资格:
bs = set(b)
c = [x for x in a if x not in bs]
答案 1 :(得分:5)
将列表转换为集合并获取集合差异。
c = list(set(a).difference(set(b))
答案 2 :(得分:5)
或使用列表理解:
c = [x for x in a if x not in b]
答案 3 :(得分:2)
根据你正在做的事情,你可能最好先使用套装:
>>> a = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }
>>> b = {3, 4, 5, 6}
>>> a
set([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b
set([3, 4, 5, 6])
>>> a.difference(b)
set([0, 1, 2, 7, 8, 9])
如果你想计算多次重复, collections.Counter
是另一种有用的标准类型:
>>> from collections import Counter as C
>>> a = C([1,1,1,2,2,3,4])
>>> b = C([1,4,5])
>>> a - b
Counter({1: 2, 2: 2, 3: 1})