使用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模块的函数),打乱列表元素的顺序/如何对列表元素进行随机排列