我想要将两个列表合并,并输出所有可能的组合,其中维护原始两个列表的顺序。例如:
list_1 = [9,8]
list_2 = [2,1]
#output
combo= [9821,9281,2981,2918,2198,9218]
在列表“combo”中的每个元素中,2始终出现在1之前,9始终出现在8之前。
到目前为止,我使用了itertools中的排列函数来循环遍历所有可能的排列,但速度不够快。
这是我所得到的:
from itertools import permutations
seq = [5, 9, 8, 2, 1]
plist = []
root = seq[0]
left = filter(lambda x: x > root, seq)
right = filter(lambda x: x < root, seq)
for pseq in permutations(seq[1:]):
pseq = (root,) + pseq
if list(filter(lambda x: x > root, pseq)) == left and list(filter(lambda x: x < root, pseq)) == right:
plist.append(pseq)
print plist
谢谢!