我有两个列表,我想将它们合并在一起。假设它们为list_left
和list_right
合并规则是:
list_left
和list_right
中的相同。e1
,e2
)同时出现在list_left
和list_right
中,并且list_left
和{{{{}}}中的元素顺序不同1}}。它必须保持list_right
中的顺序。换句话说,如果list_right
位于e1
中的e2
之前,list_right
必须位于合并列表中e1
之前,无论e2
中的list_left
如何}}。一些例子:
list_left: w h i j k
list_right: a w t i n
merged: a w h t i j k n
list_left: w h i j k
list_right: j w m n a
merged: j w h i k m n a
list_left: j w m n a
list_right: w h i j k
merged: w h i j m n a k
list_left: a b c d
list_right: e f g h
merged: a b c d e f g h
有任何方法可以解决这个问题吗?
答案 0 :(得分:2)
只需复制list_left
中尚未加入list_merged
的元素。但是当您在list_left
中看到list_right
而不是list_merged
中的元素时,请将list_right
中的元素复制到此元素。完成list_left
后,复制list_right
中剩余的内容:
list_left = "whijk"
list_right = "jwmna"
list_merged = ""
pos = 0
for x in list_left:
if not x in list_merged:
if x in list_right:
xpos = list_right.index(x)
list_merged += list_right[pos:xpos]
pos = xpos + 1
list_merged += x
list_merged += list_right[pos:]
print list_merged
为了提高性能,您可以创建一对集合,并通过在这些集合中搜索来替换列表中的搜索。