首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从python中的列表中创建列表的所有组合

从python中的列表中创建列表的所有组合
EN

Stack Overflow用户
提问于 2014-08-07 17:42:20
回答 1查看 87关注 0票数 2

我有一个清单:l = [1, (2, 3), (4, 5), 6]

我想从这个列表中选择3个项目,但是每个子列表只能选择一个项目。使用combinations,我可以实现:

Result = [[1, (2, 3), (4, 5)], [1, (2, 3), 6], [1, (4, 5), 6]]

然而,元组没有扩展。什么是最毕达通的方法,以产生一个列表中的所有组合的项目列表?

示例输出:

Result = [[1, 2, 4], [1, 2, 5], [1, 2, 6], [1, 3, 4], [1, 3, 5], [1, 3, 6], [2, 4, 6], [2, 5, 6], [3, 4, 6], [3, 5, 6]]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-07 17:51:50

您可以将combinationsproduct结合起来。

代码语言:javascript
运行
复制
>>> from itertools import combinations, product
>>> seq = [1, (2, 3), (4, 5), 6]
>>> seq = [x if isinstance(x, tuple) else (x,) for x in seq]
>>> [sel for subseq in combinations(seq, 3) for sel in product(*subseq)]
[(1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5), (1, 2, 6), (1, 3, 6), (1, 4, 6), (1, 5, 6), (2, 4, 6), (2, 5, 6), (3, 4, 6), (3, 5, 6)]

我首先将seq转换为元组列表(即使元组只有一个元素),因为这使得以后的操作更加自然。

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

https://stackoverflow.com/questions/25188844

复制
相关文章

相似问题

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