首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的所有列表组合

Python中的所有列表组合
EN

Stack Overflow用户
提问于 2021-06-28 09:32:34
回答 2查看 54关注 0票数 0

例如,我有一个数组,它看起来像下面的[[1, 2, 3], [4, 5], [7, 8, 9]]

我的任务是显示数组中的所有组合,如下所示:

代码语言:javascript
复制
1-4-7, 1-4-8, 1-4-9

1-5-7, 1-5-8, 1-5-9

2-4-7, 2-4-8, 2-4-9

2-5-7, 2-5-8, 2-5-9

3-4-7, 3-4-8, 3-4-9

3-5-7, 3-5-8, 3-5-9

我见过很多不同的解决方案,就像这样-- How to get all possible combinations of a list’s elements?,但这不是我想要的

外接程序:数组不能被修改

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-28 09:35:41

由于您正在寻找列表的笛卡儿积,请使用itertools.product

代码语言:javascript
复制
from itertools import product

data = [[1, 2, 3], [4, 5], [7, 8, 9]]

for p in product(*data):
    print("-".join(map(str, p)))

1-4-7
1-4-8
1-4-9
1-5-7
# ...
3-4-9
3-5-7
3-5-8
3-5-9
票数 4
EN

Stack Overflow用户

发布于 2021-06-28 09:43:13

如果您不想像链接的答案那样使用itertools,下面这样的内容应该可以工作:

首先,维护一个索引列表,我们称之为positions,它表示当前在每个内部列表中查看的元素,并将所有这些索引初始化为0。在您的示例中,这将类似于[0,0,0]

打印/存储这些索引产生的组合。这里是1,4,7。

增加列表中的最后一个索引。如果这个索引现在是它对应的列表的大小(在示例中,对于最后一个索引,那将是3,对于第二个,最后一个,2等等)。然后将其重置为0,然后依次递增下一个索引。对positions中的所有值执行此检查

重复此过程,每次打印/存储结果组合,直到positions中的第一个索引达到列表列表中第一个列表的大小,此时您就完成了

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68160908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档