gpt4 book ai didi

python - 从多个列表中选择组合

转载 作者:太空狗 更新时间:2023-10-29 17:13:46 24 4
gpt4 key购买 nike

我是 python 的新手,我正在努力形成多个列表的组合。所以,我有三个(可能更多)看起来像这样:

uk_rock_stars=[1,2,3,4,5,6,7,8,9]
uk_pop_stars=[10,11,12,13,1,4,6,22,81]
us_stars=[22,34,44,7,33,99,22,77,99]
.
.

具有相同长度的所有列表。现在,我想生成它们的组合列表,其中 N 是上面列表的总数。我正在寻找如下所示的结果:

comb=[(1,10,22),(1,10,34),(1,10,44)...etc (all combinations)....]

这样,每个组合,比如 (1,10,22) 的长度与原始列表的数量(在本例中为 3)相同

最佳答案

阅读此 http://docs.python.org/2/library/itertools.html#itertools.product ,它解释了一切。

itertools是一个包,它有一堆有用的功能来迭代集合。一个有用的功能是 product该函数创建一个生成器,该生成器将迭代您提供的任意数量的可迭代集合的笛卡尔积。

itertools.product 的结果不是一个列表,它是一个生成器。 python 生成器类似于其他语言中的协程。这意味着它将根据需要计算您的组合。如果计算三个大小为 100 的可迭代对象的乘积,但只使用前 10 个左右,itertools.product将只计算 10 个组合,而不是计算所有 100^3 个组合。

如果你真的想要一个列表对象而不是一个生成器(也许你想计算切片或其他东西)调用list函数并将生成器对象作为参数传递。

以下代码生成所有组合并打印结果。

代码:

import itertools

uk_rock_stars=[1,2,3,4,5,6,7,8,9]
uk_pop_stars=[10,11,12,13,1,4,6,22,81]
us_stars=[22,34,44,7,33,99,22,77,99]

for combination in itertools.product(uk_rock_stars, uk_pop_stars, us_stars):
print combination

输出:

(1, 10, 22)
(1, 10, 34)
(1, 10, 44)
(1, 10, 7)
(1, 10, 33)
(1, 10, 99)
(1, 10, 22)
(1, 10, 77)
(1, 10, 99)
(1, 11, 22)
(1, 11, 34)
(1, 11, 44)
(1, 11, 7)
(1, 11, 33)
(1, 11, 99)
(1, 11, 22)
(1, 11, 77)
(1, 11, 99)
...
etc.

关于python - 从多个列表中选择组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15305719/

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