長いリストの順列を短いリストと一致させるにはどうすればよいですか (短いリストの長さに応じて)? [重複] 質問する

長いリストの順列を短いリストと一致させるにはどうすればよいですか (短いリストの長さに応じて)? [重複] 質問する

実装しようとしているアルゴリズムを理解するのに苦労しています。2 つのリストがあり、その 2 つのリストから特定の組み合わせを取得したいと考えています。

ここに例があります。

names = ['a', 'b']
numbers = [1, 2]

この場合の出力は次のようになります。

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]

名前の数は数字の数より多いかもしれませんlen(names) >= len(numbers)。つまり、名前が 3 つ、数字が 2 つの例を次に示します。

names = ['a', 'b', 'c']
numbers = [1, 2]

出力:

[('a', 1), ('b', 2)]
[('b', 1), ('a', 2)]
[('a', 1), ('c', 2)]
[('c', 1), ('a', 2)]
[('b', 1), ('c', 2)]
[('c', 1), ('b', 2)]

ベストアンサー1

最も簡単な方法は以下を使用することですitertools.product:

a = ["foo", "melon"]
b = [True, False]
c = list(itertools.product(a, b))
>> [("foo", True), ("foo", False), ("melon", True), ("melon", False)]

おすすめ記事