Python 我试图在元组中找到列表集

Python 我试图在元组中找到列表集,python,Python,比如说, (['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

比如说,

(['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
对于枚举中的i,e(tup):
当索引

现在我有了这个,我不知道如何遍历tup(Tuple)并提取每个列表以找到每个2个列表的集合,然后迭代并与Tuple中的其余列表进行比较

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'}
sets = [set(l) for l in (['2', '3', '5'], ['1', '3', '4', '5']) ]
common_elements = reduce(lambda a,b: a & b, sets)

很简单:python有一个set类型,所以

sets = [set(l) for l in (['2', '3', '5'], ['1', '3', '4', '5']) ]
common_elements = reduce(lambda a,b: a & b, sets)

返回类型要一致。当集合为空时,不要返回空字符串

我会找到这样的数字:

>>> 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:])

返回类型要一致。当集合为空时,不要返回空字符串

话虽如此,我会发现如下数字:

>>> 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:])

,因为2包含在元组的所有3个列表中
,但
4
不包含在第一个元组的两个列表中。这里的逻辑是什么?@inspectorG4dget my Error我会编辑它为什么默认返回空字符串?为什么不只是一个没有元素的列表?输出类型不是很好clear@FlavianHautbois当然,其中任何一个都可以,但我将使用映射的输出,所以这不重要,因为元组的所有3个列表中都包含2,但第一个元组的两个列表中都不包含
4
。这里的逻辑是什么?@inspectorG4dget my Error我会编辑它为什么默认返回空字符串?为什么不只是一个没有元素的列表?输出类型不是很好clear@FlavianHautbois当然任何一个都可以,但我打算使用地图的输出,所以它不应该最喜欢这个答案,因为它是干净的,并且可以处理不同数量的数据lists@timgeb交叉点需要集合而不是列表。。。你可以做列表理解,但我认为你仍然需要将它们转换为sets@JulienSpronck你说得对,我看错了。您可以在现有集合上使用交集,而无需将参数转换为集合(请参见我的答案)。@timgeb fair:-)有点像是从Though那里偷来的。我最喜欢这个答案,因为它干净,并且可以处理不同数量的参数lists@timgeb交叉点需要集合而不是列表。。。你可以做列表理解,但我认为你仍然需要将它们转换为sets@JulienSpronck你说得对,我看错了。您可以在现有集合上使用
交集
,而无需将参数转换为集合(请参见我的答案)。@timgeb fair:-)不过有点被窃取了