【发布时间】:2018-02-03 18:37:27
【问题描述】:
我必须合并所有包含彼此至少一个元素的元组。
tups=[(1,2),(2,3),(8,9),(4,5),(15,12),(9,6),(7,8),(3,11),(1,15)]
第一个元组 (1,2) 应该与 (2,3),(3,11),(1,15),(15,12) 合并,因为这些元组中的每一个都包含前一个元组的相似项。所以最终的输出应该是
lst1 = [1,2,3,11,12,15]
lst2=[6,7,8,9] since (8,9),(9,6) and (7,8) have matching elements
到目前为止我的代码:
finlst=[]
for items in range(len(tups)):
for resid in range(len(tups)):
if(tups[items] != tups[resid] ):
if(tups[items][0]==tups[resid][0] or tups[items][0]==tups[resid][1]):
finlst.append(list(set(tups[items]+tups[resid])))
【问题讨论】:
-
不清楚你在问什么。为什么
(1,15)应该与(3, 11)合并?(1,15)没有与(3, 15)相同的元素,而(3,11)没有与第一个元素(1, 2)相同的元素。所以我想说这里的逻辑不清楚。您是在尝试将最后一场比赛作为下一场比赛的基础(例如(1,2) -> (2, 3) -> (3, 4)),还是将所有比赛都基于第一个元组(例如(1, 2) -> (2, 5) -> (6, 1))?
标签: python-3.x tuples