gpt4 book ai didi

python - 如何创建一个列表或一组 N 深对象中的每个排列

转载 作者:太空宇宙 更新时间:2023-11-04 08:17:59 26 4
gpt4 key购买 nike

我有一个 Action 对象的元组

我想创建一个包含 N 深 Action 对象的所有可能排列的列表。

即如果我有 Eat、Sleep、Drink 和 N = 2 等 Action

列表是

[[Eat, Eat],
[Eat, Sleep],
[Eat, Drink],
[Sleep, Eat],
[Sleep, Sleep],
[Sleep, Drink],
[Drink, Eat],
[Drink, Sleep],
[Drink, Drink]]

现在,我的列表比三个 Action 大得多,N 可能是 3 个或更多。

我如何在 Python 2.7 中执行此操作?

最佳答案

听起来你想要 Cartesian product自己的列表。使用 itertools.product() :

>>> import itertools, pprint
>>> mylist = ["Eat","Sleep","Drink"]
>>> my_combination = list(itertools.product(mylist, repeat = 2))
>>> pprint.pprint (my_combination)
[('Eat', 'Eat'),
('Eat', 'Sleep'),
('Eat', 'Drink'),
('Sleep', 'Eat'),
('Sleep', 'Sleep'),
('Sleep', 'Drink'),
('Drink', 'Eat'),
('Drink', 'Sleep'),
('Drink', 'Drink')]

可选的 repeat 参数控制列表的“深度”。

请注意,列表的大小会随着深度 N 呈指数增长。不要一次具体化整个列表 - 相反,一次使用一个元素。

# Don't do this - will crash Python with out-of-memory error
list(itertools.product(my_list, repeat = 100000))

# Iterate over the list instead
for one_combination in itertools.product(my_list, repeat = 100000):
print (one_combination)

关于python - 如何创建一个列表或一组 N 深对象中的每个排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10630259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com