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,正如您所说,这个问题遗漏了很多细节。我怀疑图形/树可以更好地建模这些数据