Python 如何正确地从列表中丢弃类似的元素?

Python 如何正确地从列表中丢弃类似的元素?,python,Python,我有这样的清单: a = [1,2,3,4,5,6,7] b = [10,11,13,2,14,7] b = [10,11,13,14] a = [1,2,3,4,5,6,7] b = [10,11,13,2,14,7] b = [x for x in b if x not in a] print b >> [10, 11, 13, 14] 我想要这样的输出: a = [1,2,3,4,5,6,7] b = [10,11,13,2,14,7] b = [10,11,13,1

我有这样的清单:

a = [1,2,3,4,5,6,7]
b = [10,11,13,2,14,7]
b = [10,11,13,14]
a = [1,2,3,4,5,6,7]
b = [10,11,13,2,14,7]
b = [x for x in b if x not in a]

print b
>> [10, 11, 13, 14]
我想要这样的输出:

a = [1,2,3,4,5,6,7]
b = [10,11,13,2,14,7]
b = [10,11,13,14]
a = [1,2,3,4,5,6,7]
b = [10,11,13,2,14,7]
b = [x for x in b if x not in a]

print b
>> [10, 11, 13, 14]
如果a的某个元素在b中,则该元素已被丢弃。 请,任何人都可以告诉我怎么做?

使用:

b=[x代表b中的x,如果x不在a中]

工作原理如下:

a = [1,2,3,4,5,6,7]
b = [10,11,13,2,14,7]
b = [10,11,13,14]
a = [1,2,3,4,5,6,7]
b = [10,11,13,2,14,7]
b = [x for x in b if x not in a]

print b
>> [10, 11, 13, 14]
Re:@DeepSpace的建议是,在列表中查找集合的元素要比在另一个列表中查找列表的元素快得多,因此将
a
声明为
set()


这是
O(len(a)*len(b))
。将
a
a设置为一个集合,这将成为
O(len(b))
,因为集合查找是
O(1)
,而不是列表查找是
O(n)
谢谢您指出这一点!补充回答。