开发者社区> 问答> 正文

如何从列表中获取所有排序的子列表?

我有一个列表:[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

展开
收起
is大龙 2020-03-23 21:19:01 484 0
1 条回答
写回答
取消 提交回答
  • 您可以在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

    2020-03-23 21:19:10
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载