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重要的顺序.我正在努力解决这个问题.任何帮助表示赞赏.
我尝试使用 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)
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |