使用 python 的值列表中随机值的所有排列
All permutations of random value within list of values using python
我需要使用 python(考虑 itertools)达到以下结果,我有 4 行,每行都可以获得一个值 = ['v1'、'v2'、'v3'],因为我们有 3 个选项和 4 行,那么可能性的数量将是 3^4 = 81
例如:
col1 col2 col3 ....... col81
1 v1 v1 v_
2 v2 v3
3 v1 v2
4 v3 v1
我怎样才能实现它,以涵盖所有可能性的方式?
您似乎在寻找“产品”而不是“排列”。试试这个:
import itertools
from pprint import pprint
v = [1, 2, 3]
pprint(list(itertools.product(v, repeat=4)))
[(1, 1, 1, 1),
(1, 1, 1, 2),
(1, 1, 1, 3),
(1, 1, 2, 1),
(1, 1, 2, 2),
...
(3, 3, 2, 3),
(3, 3, 3, 1),
(3, 3, 3, 2),
(3, 3, 3, 3)]
如果你需要转置它,你可以这样做:
import itertools
from pprint import pprint
v = [1, 2, 3]
product = list(itertools.product(v, repeat=4))
transpose = list(map(list, zip(*product)))
pprint(transpose)
我需要使用 python(考虑 itertools)达到以下结果,我有 4 行,每行都可以获得一个值 = ['v1'、'v2'、'v3'],因为我们有 3 个选项和 4 行,那么可能性的数量将是 3^4 = 81
例如:
col1 col2 col3 ....... col81
1 v1 v1 v_
2 v2 v3
3 v1 v2
4 v3 v1
我怎样才能实现它,以涵盖所有可能性的方式?
您似乎在寻找“产品”而不是“排列”。试试这个:
import itertools
from pprint import pprint
v = [1, 2, 3]
pprint(list(itertools.product(v, repeat=4)))
[(1, 1, 1, 1),
(1, 1, 1, 2),
(1, 1, 1, 3),
(1, 1, 2, 1),
(1, 1, 2, 2),
...
(3, 3, 2, 3),
(3, 3, 3, 1),
(3, 3, 3, 2),
(3, 3, 3, 3)]
如果你需要转置它,你可以这样做:
import itertools
from pprint import pprint
v = [1, 2, 3]
product = list(itertools.product(v, repeat=4))
transpose = list(map(list, zip(*product)))
pprint(transpose)