python:奇怪的列表元素组合

fre*_*red 9 python combinations list

我有以下两个清单:

l1 = [1, 2, ,3]  
l2 = [x, y]  
Run Code Online (Sandbox Code Playgroud)

并且希望所有5个元素的列表l1仅保持顺序.说:

[x, y, 1, 2, 3],  
[x, 1, y, 2, 3],  
[x, 1, 2, y, 3],  
[x, 1, 2, 3, y],  
[y, x, 1, 2, 3],  
[y, 1, x, 2, 3],  
[y, 1, 2, x, 3],  
[y, 1, 2, 3, x],  
[1, x, y, 2, 3],  
[1, x, 2, y, 3],  
[1, x, 2, 3, y],  
[1, y, x, 2, 3],  
[1, y, 2, x, 3],  
[1, y, 2, 3, x],  
...  
[1, 2, 3, y, x],  
...  
[1, 2, 3, x, y]  
Run Code Online (Sandbox Code Playgroud)

观察顺序l1是重要的而l2不是.l2元素在l1 + l2个位置上运行但只有l1重要的顺序.我正在努力解决这个问题.任何帮助表示赞赏.

Mat*_*ttH 0

我尝试使用 l1 的类占位符进行一些操作,itertools.permutations但其中有重复项。

所以,再试一次,这是我能得到的最简单的:

from itertools import combinations, permutations

l1 = [1, 2, 3]
l2 = ["x", "y"]
r = range(len(l1)+len(l2))
for combo in combinations(r,len(l2)):
  for permu in permutations(l2):
    i1 = iter(l1).next
    i2 = iter(permu).next
    row = [ i2() if i in combo else i1() for i in r ]
    print row
Run Code Online (Sandbox Code Playgroud)

产量:

['x', 'y', 1, 2, 3]
['y', 'x', 1, 2, 3]
['x', 1, 'y', 2, 3]
['y', 1, 'x', 2, 3]
['x', 1, 2, 'y', 3]
['y', 1, 2, 'x', 3]
['x', 1, 2, 3, 'y']
['y', 1, 2, 3, 'x']
[1, 'x', 'y', 2, 3]
[1, 'y', 'x', 2, 3]
[1, 'x', 2, 'y', 3]
[1, 'y', 2, 'x', 3]
[1, 'x', 2, 3, 'y']
[1, 'y', 2, 3, 'x']
[1, 2, 'x', 'y', 3]
[1, 2, 'y', 'x', 3]
[1, 2, 'x', 3, 'y']
[1, 2, 'y', 3, 'x']
[1, 2, 3, 'x', 'y']
[1, 2, 3, 'y', 'x']
Run Code Online (Sandbox Code Playgroud)