Python:将列表与列表合并
我有一份清单:Python:将列表与列表合并,python,list,Python,List,我有一份清单: packets=[['B', 'A'], ['B', 'C'], ['A', 'D'], ['C', 'D'], ['C', 'E'], ['D', 'E'], []] 我在同一个列表中有两个for循环,类似于: for a in packets[:]: for b in packets[:]: i、 例如,每次a=['B','a']B从['B','a']一直迭代到['D','e']。这就是我想做的: 如果a的最后一个元素等于b的第一个元素,即当a=['b','a']和
packets=[['B', 'A'], ['B', 'C'], ['A', 'D'], ['C', 'D'], ['C', 'E'], ['D', 'E'], []]
我在同一个列表中有两个for循环,类似于:
for a in packets[:]:
for b in packets[:]:
i、 例如,每次a=['B','a']
B
从['B','a']
一直迭代到['D','e']
。这就是我想做的:
如果a
的最后一个元素等于b
的第一个元素,即当a=['b','a']
和b=['a','D']
时,我必须有['b','a','D']
。同样地,['B','A','D']
的最后一个元素等于['D','E']
的第一个元素。所以,现在我必须有['B','C','D','E']
类似地,当A=['B','C']
和B=['C','E']
时,我必须有['B','C','E']
。当A=['B','C']
和B=['C','D']
和B=['D','E']
时,我必须有['B','C','D','E']
等等
有什么想法吗?不确定这是否是你想要的,但是
>>> packets=[['B', 'A'], ['B', 'C'], ['A', 'D'], ['C', 'D'], ['C', 'E'], ['D', 'E'], []]
>>>
>>> for a in packets:
... for b in packets:
... if a and b and a[-1]==b[0]:
... print a[:-1]+b
... packets.append(a[:-1]+b)
...
['B', 'A', 'D']
['B', 'C', 'D']
['B', 'C', 'E']
['A', 'D', 'E']
['C', 'D', 'E']
['B', 'A', 'D', 'E']
['B', 'C', 'D', 'E']
最后的
[]
元素的用途是什么?Python中的迭代不需要sentinel,因为列表知道自己的长度。如果您已经编写了任何代码,您应该发布它(并确保将其格式化为代码)。还有,你第一次说的是['B'、'A'、'D'、'E']吗?如果你有['A'、'B'、['B'、'C'、['C'、'D']呢?您想在输出中同时使用['A','B','C']和['A','B','D']吗?如果有一个循环,比如[['a',B'],['B',a']]?什么是“拥有”的意思?是否将其存储在另一个列表中?是否将其存储在同一个列表中?@senderle是的,我认为OP的意思是“如果list1.end==list2.start
,则将list1、list2
替换为合并列表”。在这个答案中,我不确定的一件事是['B','A','D']
在['B','A','D','E']
和类似情况下的重复。从问题中奇怪的词语选择,很难判断这是否是我们想要的。此外,这假设列表中不存在循环-否则您将陷入无限循环中(请尝试packets=[['B','A'],['A','B']
。不过,同样,无法从问题中知道这是否是个问题。@Jodaka,正如您所说,这个问题遗漏了很多细节。我怀疑图形/树可以更好地建模这些数据