gpt4 book ai didi

python - 数组给定长度的所有组合

转载 作者:行者123 更新时间:2023-11-28 22:25:20 25 4
gpt4 key购买 nike

如果我有:

a=[[1,2,3],['a','b'],[7,8,9],['c','d','e']]

我知道我应该使用:

for t in itertools.product(*a):
print t

获取所有组合如

[(1,'a',7,'c'),(1,'a',7,'d')....]

但是,如果我想设置一个元素的长度子序列,我该怎么办呢?比如我想要的结果是(如果我设置长度为3):

[(1,'a',7),(1,'a','c')....]

都是长度为3的组合。

最佳答案

您可以通过使用外循环来获取 a 中 3 个子列表的所有组合,然后使用内循环来生成这些子列表的笛卡尔积:

import itertools

a = [[1, 2, 3], ['a', 'b'], [7, 8, 9], ['c', 'd', 'e']]

for groups in itertools.combinations(a, 3):
for t in itertools.product(*groups):
print(t)

输出

(1, 'a', 7)
(1, 'a', 8)
(1, 'a', 9)
(1, 'b', 7)
(1, 'b', 8)
(1, 'b', 9)
(2, 'a', 7)
(2, 'a', 8)
(2, 'a', 9)
(2, 'b', 7)
(2, 'b', 8)
(2, 'b', 9)
(3, 'a', 7)
(3, 'a', 8)
(3, 'a', 9)
(3, 'b', 7)
(3, 'b', 8)
(3, 'b', 9)
(1, 'a', 'c')
(1, 'a', 'd')
(1, 'a', 'e')
(1, 'b', 'c')
(1, 'b', 'd')
(1, 'b', 'e')
(2, 'a', 'c')
(2, 'a', 'd')
(2, 'a', 'e')
(2, 'b', 'c')
(2, 'b', 'd')
(2, 'b', 'e')
(3, 'a', 'c')
(3, 'a', 'd')
(3, 'a', 'e')
(3, 'b', 'c')
(3, 'b', 'd')
(3, 'b', 'e')
(1, 7, 'c')
(1, 7, 'd')
(1, 7, 'e')
(1, 8, 'c')
(1, 8, 'd')
(1, 8, 'e')
(1, 9, 'c')
(1, 9, 'd')
(1, 9, 'e')
(2, 7, 'c')
(2, 7, 'd')
(2, 7, 'e')
(2, 8, 'c')
(2, 8, 'd')
(2, 8, 'e')
(2, 9, 'c')
(2, 9, 'd')
(2, 9, 'e')
(3, 7, 'c')
(3, 7, 'd')
(3, 7, 'e')
(3, 8, 'c')
(3, 8, 'd')
(3, 8, 'e')
(3, 9, 'c')
(3, 9, 'd')
(3, 9, 'e')
('a', 7, 'c')
('a', 7, 'd')
('a', 7, 'e')
('a', 8, 'c')
('a', 8, 'd')
('a', 8, 'e')
('a', 9, 'c')
('a', 9, 'd')
('a', 9, 'e')
('b', 7, 'c')
('b', 7, 'd')
('b', 7, 'e')
('b', 8, 'c')
('b', 8, 'd')
('b', 8, 'e')
('b', 9, 'c')
('b', 9, 'd')
('b', 9, 'e')

关于python - 数组给定长度的所有组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45560303/

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