【问题标题】:Creating specific permutations Python创建特定排列 Python
【发布时间】:2018-05-13 10:05:39
【问题描述】:

我有一个二维列表的值:

# 4 x 4, 2-dimensional list
values = [[4, 7, 8], 
          [1, 3, 4], 
          [7, 5, 6], 
          [2, 9, 1]]

我想为每个列表创建包含这些值的所有可能排列(笛卡尔积)的元组。

# example for the list at index 0 of values
args0 = [(4, 7, 8), (7, 4, 8), (4, 8, 7), (8, 4, 7), (7, 8, 4), (8, 7, 4)] 

有没有简单的方法来解决这个问题?我已经尝试过 itertools 但无法让它与“特定值”一起使用。

【问题讨论】:

    标签: python list permutation itertools


    【解决方案1】:

    你想要的是列表中每个元素的排列,所以只需mapitertools.permutations

    import itertools
    
    values = [[4, 7, 8], 
              [1, 3, 4], 
              [7, 5, 6], 
              [2, 9, 1]]
    
    perms = map(itertools.permutations, values)
    for v in perms:
        print(list(v)) 
    

    结果:

    [(4, 7, 8), (4, 8, 7), (7, 4, 8), (7, 8, 4), (8, 4, 7), (8, 7, 4)]
    [(1, 3, 4), (1, 4, 3), (3, 1, 4), (3, 4, 1), (4, 1, 3), (4, 3, 1)]
    [(7, 5, 6), (7, 6, 5), (5, 7, 6), (5, 6, 7), (6, 7, 5), (6, 5, 7)]
    [(2, 9, 1), (2, 1, 9), (9, 2, 1), (9, 1, 2), (1, 2, 9), (1, 9, 2)]
    

    你有一个live example

    【讨论】:

    • 这很干净 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    相关资源
    最近更新 更多