【问题标题】:How to get all possible combinations of two different lists?如何获得两个不同列表的所有可能组合?
【发布时间】:2014-10-04 22:33:00
【问题描述】:

我很难理解我的问题:

我有 2 个列表:

from = ['A', 'B', 'C']
to = ['D', 'E', 'F']

我需要生成一个矩阵,将一个列表中的每个项目组合到另一个列表中:

final = [[['A', 'D'], ['B', 'E'], ['C', 'F']],
         [['A', 'D'], ['B', 'F'], ['C', 'E']],
         [['A', 'E'], ['B', 'F'], ['C', 'D']],
         [['A', 'E'], ['B', 'D'], ['C', 'F']],
         [['A', 'F'], ['B', 'D'], ['C', 'E']],
         [['A', 'F'], ['B', 'E'], ['C', 'D']]]

我试图这样做:

for i in range(len(initial)):
    for j in range(len(transformed)):
        self.semantic_networks[j][i][0] = self.initial_figure[i]['name']
        self.semantic_networks[i][j][1] = self.transformed_figure[(j + i) % len(self.transformed_figure)]['name']

但是,我只得到顶部:

[['A', 'D'], ['B', 'E'], ['C', 'F']]
[['A', 'E'], ['B', 'F'], ['C', 'D']]
[['A', 'F'], ['B', 'D'], ['C', 'E']]
[[0, 0], [0, 0], [0, 0]]
[[0, 0], [0, 0], [0, 0]]
[[0, 0], [0, 0], [0, 0]]

我想得到什么?组合?排列?组合组合??

任何提示???

【问题讨论】:

    标签: python list statistics combinations permutation


    【解决方案1】:

    在第二个列表中应用itertools.permutations,然后在第一个列表中应用zip。

    from itertools import permutations
    
    lst1 = ['A', 'B', 'C']
    lst2 = ['D', 'E', 'F']
    
    for p in permutations(lst2):
        print zip(lst1, p)
    #
    [('A', 'D'), ('B', 'E'), ('C', 'F')]
    [('A', 'D'), ('B', 'F'), ('C', 'E')]
    [('A', 'E'), ('B', 'D'), ('C', 'F')]
    [('A', 'E'), ('B', 'F'), ('C', 'D')]
    [('A', 'F'), ('B', 'D'), ('C', 'E')]
    [('A', 'F'), ('B', 'E'), ('C', 'D')]
    

    【讨论】:

    • 天哪,这正是我要找的……谢谢!如此简单,我在同一件事上花了几个小时,简直不敢相信。
    【解决方案2】:

    您似乎想要所有可能的排列组合:

    import itertools
    a = ['A', 'B', 'C']
    b = ['D', 'E', 'F']
    items = zip(itertools.permutations(a), itertools.permutations(b))
    

    【讨论】:

    • 不完全是,这不是我要找的最终结果。
    • @mimoralea:我知道,但您可以从这里创建最终结果。
    • @SimeonVisser:答案有点差。它既没有解决原始问题,也没有显示如何从两个排列的元组列表中进行。 [((a,b,c), (d,e,f)), ...]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-10
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多