我有一个列表:[1,2,3,4]。可能会更长。将会有更多的组合。这些值不太重要。1,2,3,4更多有关元素的顺序或索引(我没有为第一个元素使用0)。
现在,我想拥有:
4-elements: [1,2,3,4]
3-elements: [1,2,3], [1,2,4], [1,3,4], [2,3,4]
或更笼统地说,我可以指定子列表的元素数量会很好。
我在考虑使用循环,按顺序拾取每个元素。要获得四个元素,将需要四个循环。随着所需元素数量的增加,它将变得难以管理。只是想知道是否有更简单的解决方案。谢谢!
问题来源:stackoverflow
您可以在itertools.combinations中使用dict
:
from itertools import combinations
l = [1, 2, 3, 4]
{i: list(combinations(l, i)) for i in range(4, 2, -1)}
输出:
{4: [(1, 2, 3, 4)], 3: [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]}
每个键形式dict代表组合中元素的数量
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。