例如,
(['2', '3', '5'], ['1', '3', '4', '5'])
以上应该产生数字3和5
(['1', '2', '4'], ['1', '2'])
这应该给出1,2
(['2', '3', '5'], ['1', '2', '4'], ['2', '3'])
这个,应该给出2,因为2包含在元组的所有3个列表中。如果没有设置,它应该只返回一个空列表
for i,e in enumerate(tup):
while index < len(tup):
print(tup[index], tup[index + 1])
index = index + 1
现在我有了这个,我不知道如何通过tup(元组)并提取每个列表以找到每个2列表的集合并迭代并与元组中的其余列表进行比较
答案 0 :(得分:6)
def intersect(lists):
return list(set.intersection(*map(set, lists)))
答案 1 :(得分:3)
In [8]: t = (['2', '3', '5'], ['1', '3', '4', '5'])
In [9]: functools.reduce(lambda a,b: set.intersection(set(a), set(b)), t)
Out[9]: {'3', '5'}
答案 2 :(得分:2)
回报类型保持一致。当你有空集时,不要返回一个空字符串。
话虽如此,我发现这样的数字:
>>> lsts = (['2', '3', '5'], ['1', '3', '4', '5'])
>>> set(lsts[0]).intersection(*lsts[1:])
set(['3', '5'])
>>>
>>> lsts = (['1', '2', '4'], ['1', '2'])
>>> set(lsts[0]).intersection(*lsts[1:])
set(['1', '2'])
>>>
>>> lsts = (['2', '3', '5'], ['1', '2', '4'], ['2', '3'])
>>> set(lsts[0]).intersection(*lsts[1:])
set(['2'])
该功能将是:
>>> def common(lsts):
... return set() if not lsts else set(lsts[0]).intersection(*lsts[1:])
答案 3 :(得分:1)
这很简单:python有一个集合类型,所以只需
sets = [set(l) for l in (['2', '3', '5'], ['1', '3', '4', '5']) ]
common_elements = reduce(lambda a,b: a & b, sets)