簡體   English   中英

如何獲得兩個不同列表的所有可能組合?

[英]How to get all possible combinations of two different lists?

理解我的問題我遇到了很多麻煩:

我有兩個清單:

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]]

我想要得到什么? 組合? 排列? 組合的組合??

任何提示???

在第二個列表上應用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')]

看起來你想要所有可能的排列的組合:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM