使用python的值列表中随机值的所有排列

Posted

技术标签:

【中文标题】使用python的值列表中随机值的所有排列【英文标题】:All permutations of random value within list of values using python 【发布时间】:2021-12-04 17:17:34 【问题描述】:

我需要使用 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

我怎样才能实现它,以涵盖所有可能性?

【问题讨论】:

只有3个! = 6 种排列该列表的方法。您是否要改用笛卡尔积? 不是真的,我每次只需要列表中的一个值(3 个值),每次 4 次......这给出了 3^4 种可能性,根据我的理解,每一列将代表一种可能性,我'将编辑我的表格示例以使其更清晰。 【参考方案1】:

您似乎在寻找“产品”而不是“排列”。试试这个:

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)

【讨论】:

谢谢。做了类似的事情: df = pd.DataFrame(data = np.array(product).T, index= keys, columns= coln, dtype= np.object) 来获取我的目标表 @zbeedatm 很高兴能帮上忙 :)

以上是关于使用python的值列表中随机值的所有排列的主要内容,如果未能解决你的问题,请参考以下文章

Python面试必考重点之列表,元组和字典第四关——编写一个函数(不要使用python模块的函数),打乱列表元素的顺序/如何对列表元素进行随机排列

关于Python修改列表的值的问题

以大于 Python 列表中的值的最小差值对大多数数字进行采样的最快方法

python怎么随机取列表的值

在 Python 中随机化字符串列表的最佳方法

满足条件时列表中的值的总和