运行 遍历列表与集合数字的所有组合
run through all combinations of a list with set numbers
我有一个项目需要 运行 遍历列表的所有组合并循环设置数字。
例如
code = [4,3,2,1]
code = [4,3,1,2]
code = [4,2,1,3]
.
.
.
我试图列出一长串数字来制作某种手册
例如
code = [4,3,2,1]
manual = [1,2,1,2,1,3,1,2,1,2,1,3,1,2,1,2,1,3,1,2,1,2,1,0]
for m in manual:
print(code)
if m == 1:
code[-1], code[-2] = code[-2], code[-1]
elif m == 2:
code[-1], code[-3] = code[-3], code[-1]
elif m == 3:
code[-1], code[-2] , code[-3] , code[-4] = code[-4], code[-3] , code[-2] , code[-1]
这行得通,但是如果我有大量的代码组合列表,手册会变得非常大。
是否有更好的方法 - 或者我应该继续使用手动版本?
我主要是用python写作,但也能看很多其他语言,所以如果你想用另一种语言写作,我也能理解
如果我正确理解你的问题,itertools.permutations
应该可以解决问题:
from itertools import permutations
code = [4,3,2,1]
for perm in permutations(code):
print(perm)
# (4, 3, 2, 1)
# (4, 3, 1, 2)
# (4, 2, 3, 1)
# ...
为此,如果您使用的是 Python 2.6 及更高版本,或者您使用的是 Python 3.
,则可以使用标准库中提供的排列函数
import itertools
permutations = list(itertools.permutations([1, 2, 3, 4]))
for i in list(perm):
print(i)
这导致:
(1, 2, 3, 4)
(1, 2, 4, 3)
(1, 3, 2, 4)
(1, 3, 4, 2)
(1, 4, 2, 3)
(1, 4, 3, 2)
(2, 1, 3, 4)
(2, 1, 4, 3)
(2, 3, 1, 4)
(2, 3, 4, 1)
(2, 4, 1, 3)
(2, 4, 3, 1)
(3, 1, 2, 4)
(3, 1, 4, 2)
(3, 2, 1, 4)
(3, 2, 4, 1)
(3, 4, 1, 2)
(3, 4, 2, 1)
(4, 1, 2, 3)
(4, 1, 3, 2)
(4, 2, 1, 3)
(4, 2, 3, 1)
(4, 3, 1, 2)
(4, 3, 2, 1)
我有一个项目需要 运行 遍历列表的所有组合并循环设置数字。
例如
code = [4,3,2,1]
code = [4,3,1,2]
code = [4,2,1,3]
.
.
.
我试图列出一长串数字来制作某种手册
例如
code = [4,3,2,1]
manual = [1,2,1,2,1,3,1,2,1,2,1,3,1,2,1,2,1,3,1,2,1,2,1,0]
for m in manual:
print(code)
if m == 1:
code[-1], code[-2] = code[-2], code[-1]
elif m == 2:
code[-1], code[-3] = code[-3], code[-1]
elif m == 3:
code[-1], code[-2] , code[-3] , code[-4] = code[-4], code[-3] , code[-2] , code[-1]
这行得通,但是如果我有大量的代码组合列表,手册会变得非常大。
是否有更好的方法 - 或者我应该继续使用手动版本?
我主要是用python写作,但也能看很多其他语言,所以如果你想用另一种语言写作,我也能理解
如果我正确理解你的问题,itertools.permutations
应该可以解决问题:
from itertools import permutations
code = [4,3,2,1]
for perm in permutations(code):
print(perm)
# (4, 3, 2, 1)
# (4, 3, 1, 2)
# (4, 2, 3, 1)
# ...
为此,如果您使用的是 Python 2.6 及更高版本,或者您使用的是 Python 3.
,则可以使用标准库中提供的排列函数import itertools
permutations = list(itertools.permutations([1, 2, 3, 4]))
for i in list(perm):
print(i)
这导致:
(1, 2, 3, 4)
(1, 2, 4, 3)
(1, 3, 2, 4)
(1, 3, 4, 2)
(1, 4, 2, 3)
(1, 4, 3, 2)
(2, 1, 3, 4)
(2, 1, 4, 3)
(2, 3, 1, 4)
(2, 3, 4, 1)
(2, 4, 1, 3)
(2, 4, 3, 1)
(3, 1, 2, 4)
(3, 1, 4, 2)
(3, 2, 1, 4)
(3, 2, 4, 1)
(3, 4, 1, 2)
(3, 4, 2, 1)
(4, 1, 2, 3)
(4, 1, 3, 2)
(4, 2, 1, 3)
(4, 2, 3, 1)
(4, 3, 1, 2)
(4, 3, 2, 1)