【毎日Python】Pythonで複数のリストの要素をまとめて取得する方法|zip

zip
毎日Python/こつこつPython

Pythonで複数のリストの要素を取得する方法です。
使用するのは、Pythonの組み込み関数のzip関数です。
まず、このような2つのリストで試してみましょう。

products = ['apple', 'orange', 'grape']
prices = [100, 200, 300]

zip関数は、for文のループ処理によって適用させることができます。
まず、for文にカウンター変数を指定します。
続けて、inの後にzip関数で、それぞれのリストの変数を指定します。
print関数で実行して、表示させてみましょう。
それぞれのリストの要素の値を、タプルで取得することができました。
このようにzip関数では、インデックスが同じ値がペアとなって、タプルで取得されます。

for i in zip(products, prices):
    print(i)

実行結果:

('apple', 100)
('orange', 200)
('grape', 300)

次に、3つのリストで試してみましょう。
一つ目のリストの要素数は、他のリストより1つ多くなっています。

products = ['apple', 'orange', 'grape','banana']
prices = [100, 200, 300]
numbers = [1,2,3]

先ほどと同じように、zip関数の引数に変数を指定して、print関数で実行します。
3つのリストの要素をタプルで取得することができました。
なお、一つ目のリストにおける4つ目の要素は、取得されていないことが確認できます。
このように、取得するリストの要素数が異なる場合、多い分の要素は取得されません。

for item in zip(products, prices,numbers):
    print(item)

実行結果:

('apple', 100, 1)
('orange', 200, 2)
('grape', 300, 3)

最後に、各要素をリストで取得する方法をみてみましょう。
list関数の引数に、zip関数でそれぞれのリストの変数を指定します。
実行します。
それぞれの要素をリストで取得することができました。
このようにzip関数は、list関数内でも適用させることができます。

products = ['apple', 'orange', 'grape']
prices = [100, 200, 300]
numbers = [1,2,3]

list(zip(products,prices,numbers))

実行結果:

[('apple', 100, 1), ('orange', 200, 2), ('grape', 300, 3)]

関連メソッド

【毎日Python】Pythonでインデックスと値をセットで取得する方法|enumerate

【毎日Python】Pythonで辞書型データを作成する方法|dict