我需要组合包含相同子字符串的列表中的所有元素。 T.ex。:
lst = ["A,B,C", "A,H,J", "T,Q,M", "B,R,X"]`
从第一个元素开始" A,B,C"我需要查看" A"或" B"或" C"在lst列表中的其余元素中。所以在一天结束时元素"A,B,C", "A,H,J"
和" B,R,X"因为他们共享" A"或" B"。最终的第一个列表应如下所示:
["A,B,C,A,H,J,B,Q,X", "T,Q,M"]
答案 0 :(得分:1)
您可以使用set.intersection检查字符串在递归函数中是否有任何交叉点:
lst = ["A,B,C", "A,H,J", "T,Q,M", "B,R,X"]
def comb(l):
for ind,i in enumerate(l) :
for ix,j in enumerate(l[ind+1:]) :
if set(i.split(',')).intersection(j.split(',')) and len(l)>1:
return comb([l.pop(ind)+','+l.pop(ix)]+l)
return l
print comb(lst)
['A,B,C,A,H,J,B,R,X', 'T,Q,M']