a = [1,2,3,4,5]
b = [1,3,5,6]
c = a and b
print c
实际输出:[1,3,5,6] 预期输出:[1,3,5]
如何在两个列表上实现布尔AND操作(列表交集)?
a = [1,2,3,4,5]
b = [1,3,5,6]
c = a and b
print c
实际输出:[1,3,5,6] 预期输出:[1,3,5]
如何在两个列表上实现布尔AND操作(列表交集)?
当前回答
a = [1,2,3,4,5]
b = [1,3,5,6]
c = list(set(a).intersection(set(b)))
应该像做梦一样工作。并且,如果可以的话,使用集合而不是列表来避免所有这些类型更改!
其他回答
如果顺序不重要,你不需要担心重复,那么你可以使用set intersection:
>>> a = [1,2,3,4,5]
>>> b = [1,3,5,6]
>>> list(set(a) & set(b))
[1, 3, 5]
这样可以得到两个列表的交集,也可以得到公共重复项。
>>> from collections import Counter
>>> a = Counter([1,2,3,4,5])
>>> b = Counter([1,3,5,6])
>>> a &= b
>>> list(a.elements())
[1, 3, 5]
你也可以使用numpy.intersect1d(ar1, ar2)。 它返回两个数组中唯一且已排序的值。
a = [1,2,3,4,5]
b = [1,3,5,6]
c = list(set(a).intersection(set(b)))
应该像做梦一样工作。并且,如果可以的话,使用集合而不是列表来避免所有这些类型更改!
如果布尔与是指同时出现在两个列表中的项,例如交集,那么你应该看看Python的set和frozenset类型。