TIL

Today I Learned. 知ったこと、学んだことを書いていく

zip()を使った反復処理 - Python

Pythonにはzip()関数がある。

これは複数のシーケンスを並行して処理をするときに使える。

例)forで使う。

>>> days = ['月曜日', '火曜日', '水曜日']
>>> fruits = ['バナナ', 'オレンジ', 'ピーチ']
>>> drinks = ['コーヒー', 'お茶', 'ビール']
>>> desserts = ['ティラミス', 'アイス', 'パイ', 'プリン']
>>> for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts):
...     print(f'{day}: {fruit}を食べる。{drink}を飲む。{dessert}で楽しむ。')
...
月曜日: バナナを食べる。コーヒーを飲む。ティラミスで楽しむ。
火曜日: オレンジを食べる。お茶を飲む。アイスで楽しむ。
水曜日: ピーチを食べる。ビールを飲む。パイで楽しむ。

zip()は一番要素数が小さいシーケンスに合わせて止まる。そのため、プリンは処理されていない。

dictを作成するときにもzip()関数を使える。

>>> dict(zip(days, fruits))
{'月曜日': 'バナナ', '火曜日': 'オレンジ', '水曜日': 'ピーチ'}

リストを作成するときにも使える。

>>> list(zip(days, fruits, drinks))
[('月曜日', 'バナナ', 'コーヒー'), ('火曜日', 'オレンジ', 'お茶'), ('水曜日', 'ピーチ', 'ビール')]


気になって調べてみたら、zip()関数で作成できるのはzipクラスのオブジェクトだった。勝手にタプルとかかと思ってた。

>>> type(zip())
<class 'zip'>



参考文献

入門 Python 3

入門 Python 3