zip関数
前回、Pythonの辞書やタプル、セットの内包表記を紹介しました。
あわせて読みたい


【Python基礎】辞書やタプル、セットの内包表記
内包表記 前回、pyzbarを使ったQRコードの読み取り方法を紹介しました。 今回は辞書やタプル、セットの内包表記を紹介します。 Pythonで内包表記というとリスト内包表記…
今回はPythonで複数のリストの組み合わせを同時に同じ順番で繰り返す方法を紹介します。
それでは始めていきましょう。
おさらい
まずはおさらいから。
複数のリストから同じインデックスの要素を一つずつ同時に取得していくにはzip関数を使い、このように記述することができました。
number_list = [0, 1, 2, 3, 4, 5]
string_list = ["a", "b", "c", "d", "e", "f"]
for number, string in zip(number_list, string_list):
print(number, string)
実行結果
0 a
1 b
2 c
3 d
4 e
5 f
次にあるリストを使って、全ての組み合わせを作り出すには「itertools」の「combinations」を使って、「combinations(リスト, 個数)」とします。
from itertools import combinations
number_list = [0, 1, 2, 3, 4, 5]
for number_combination in combinations(number_list, 2):
print(number_combination)
実行結果
(0, 1)
(0, 2)
(0, 3)
(0, 4)
(0, 5)
(1, 2)
(1, 3)
(1, 4)
(1, 5)
(2, 3)
(2, 4)
(2, 5)
(3, 4)
(3, 5)
(4, 5)
この2つを組み合わせることで、「複数のリストの組み合わせを同時に同じ順番で繰り返す」ことを達成します。
複数のリストの組み合わせを同時に同じ順番で繰り返す方法
ということで「複数のリストの組み合わせを同時に同じ順番で繰り返す」ですが、単純に上の2つを組み合わせた形にします。
from itertools import combinations
number_list = [0, 1, 2, 3, 4, 5]
string_list = ["a", "b", "c", "d", "e", "f"]
for number_combination, string_combination in zip(combinations(number_list, 2), combinations(string_list, 2)):
print(number_combination, string_combination)
実行結果
(0, 1) ('a', 'b')
(0, 2) ('a', 'c')
(0, 3) ('a', 'd')
(0, 4) ('a', 'e')
(0, 5) ('a', 'f')
(1, 2) ('b', 'c')
(1, 3) ('b', 'd')
(1, 4) ('b', 'e')
(1, 5) ('b', 'f')
(2, 3) ('c', 'd')
(2, 4) ('c', 'e')
(2, 5) ('c', 'f')
(3, 4) ('d', 'e')
(3, 5) ('d', 'f')
(4, 5) ('e', 'f')
見て分かっていただけるように、順番も合っています。
あまり出番は多くないかもしれませんが、こんな使い方もできるんだと頭の片隅にでも入れておいてもらえるといいかと思います。
次回は「ModuleNotFoundError: No module named ‘skimage’」の対処法を紹介します。
ではでは今回はこんな感じで。
コメント