【问题标题】:Get permutations of lists using python使用python获取列表的排列
【发布时间】:2014-12-30 16:55:01
【问题描述】:

假设我有一个列表:

a = [0, 0, [0, 1], [0, 1, 2]]

其中 a 可以是任意长度,它的组成部分可以是任意长度,我想生成一个新列表,该列表可以是值的任意组合,对于给定的示例,我将返回:

b = [[0,0,0,0],
     [0,0,0,1],
     [0,0,0,2], 
     [0,0,1,0],
     [0,0,1,1],
     [0,0,1,2]]

我认为这只是循环的问题,但我会很感激任何帮助。

谢谢

【问题讨论】:

    标签: python list loops combinations permutation


    【解决方案1】:

    使用itertools.product:

    >>> import itertools
    >>> a = [0, 0, [0, 1], [0, 1, 2]]
    >>> a2 = [x if isinstance(x, list) else [x] for x in a]
    >>> #  = [[0], [0], [0, 1], [0, 1, 2]]
    >>> list(itertools.product(*a2))
    [(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 0, 2), (0, 0, 1, 0), (0, 0, 1, 1), (0, 0, 1, 2)]
    

    【讨论】:

    • #评论是故意的吗?
    • @MightyPork,是的。我想告诉元素应该是序列(而不是 int)。
    猜你喜欢
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2011-12-17
    • 2021-01-24
    • 2021-03-07
    • 1970-01-01
    • 2011-07-14
    • 2020-08-31
    相关资源
    最近更新 更多