【问题标题】:In Python, how do you generate permutations of an array where you only have one element from each column and row?在 Python 中,如何生成数组的排列,其中每一列和每一行只有一个元素?
【发布时间】:2013-11-07 13:31:25
【问题描述】:

例如:

假设你有以下数组:

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

你想生成这个数组:

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

【问题讨论】:

    标签: python arrays algorithm permutation


    【解决方案1】:
    import itertools
    
    A=[[1,2,3],
    [4,5,6],
    [7,8,9]]
    
    for P in itertools.permutations(range(len(A))):
        print [A[p][i] for i,p in enumerate(P)]
    

    打印:

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

    【讨论】:

    • 谢谢,效果很好。有人能解释一下它是如何工作的吗?
    • 对于每一列 i,它选择一个行 p。 i 都是唯一的,因为它们是 0,1,2,... p 都是唯一的,因为它们来自排列。 itertools.permutations 生成所有排列,因此它会遍历所有选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2022-12-03
    • 2011-04-17
    • 1970-01-01
    • 2019-11-03
    • 1970-01-01
    相关资源
    最近更新 更多