我有一个包含数字的列表(子列表)列表,我只想保留所有(子)列表中存在的列表。
示例:
x = [ [1, 2, 3, 4], [3, 4, 6, 7], [2, 3, 4, 6, 7]]
output => [3, 4]
我该怎么做?
答案 0 :(得分:9)
common = set(x[0])
for l in x[1:]:
common &= set(l)
print list(common)
或:
import operator
print reduce(operator.iand, map(set, x))
答案 1 :(得分:7)
在一个班轮中:
>>> reduce(set.intersection, x[1:], set(x[0]))
set([3, 4])
答案 2 :(得分:2)
def f(a, b):
return list(set(a).intersection(set(b)))
reduce(f, x)
答案 3 :(得分:1)
只是另一种解决方式,几乎与nadia相同但不使用reduce,我使用map:
>>> x = [ [1, 2, 3, 4], [3, 4, 6, 7], [2, 3, 4, 6, 7]]
>>> set.intersection(*map(set,x))
set([3, 4])
>>>