リストの要素を取得する場合はfor文を使用するのが一般的ですが、複数のリストの要素をまとめて取得したい場合もあります。
「複数のリストを結合したい」
そんな方に向けて、この記事ではリストの要素を取得、結合できるzip関数について、以下の内容で解説していきます。
【基礎】zip関数の使い方
【基礎】2つ以上のリストを指定する
【発展】リストをタプルとして結合
この記事ではそんなzip関数についてわかりやすく解説していますので、ぜひ参考にしてください。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
zip関数とは
zip関数は複数のリストを同時に取得したい場合に使用する関数です。
zip関数は以下のように引数にインデックスを取得したいリストを指定します。
書き方:
zip(リスト1, リスト2, …)
zip関数を使用することで、リストのインデックス0から順番に取得されていきます。
たとえば、以下のようなリストがあった場合、最初の値100がインデックス番号0となり、1が200、2が300となります。
mylist = [100, 200, 300, 400, 500]
zip関数の使い方
ここからは実際にzip関数の使い方を見ていきましょう。
zip関数はfor文と一緒に使われます。
サンプルプログラム:
names = ['taro', 'hanako', ‘'jiro'] ages = [25, 30, 27] for name, age in zip(names, ages): print(name, age)
実行結果:
taro 25 hanako 30 jiro 27
このサンプルではnameとageの2つのリストzip関数を使用してfor文で同時にインデックスを取得しています。
このようにfor文で使われているzip関数は、引数で指定されたリストのインデックスの値を一緒に返してくれることがわかりますね!
2つ以上のリストを指定する
また、zip関数は2つ以上のリストのインデックスを取得することができます。
以下のサンプルを御覧ください。
サンプルプログラム:
names = ['taro', 'hanako', 'jiro'] ages = [25, 30, 27] address = ['tokyo', 'nagoya', 'kanagawa'] for name, age, addr in zip(names, ages, address): print(name, age, addr)
実行結果:
taro 25 tokyo hanako 30 nagoya jiro 27 kanagawa
インデックス数が異なる場合
zip関数で異なるインデックス数を指定した場合は、インデックス数が少ないリストの値が返され、その分の値は処理されません。
サンプルプログラム:
names = ['taro', 'hanako', 'jiro', 'takeshi'] ages = [25, 30, 27] for name, age in zip(names, ages): print(name, age)
実行結果:
taro 25 hanako 30 jiro 27
タプルとして取得したい場合
zip関数はリストのインデックスを同時に取得することができますが、zip関数のタプル(tuple)として取得することもできます。
サンプルプログラム:
names = ['taro', 'hanako', 'jiro', 'takeshi'] ages = [25, 30, 27] # リストを結合する tp = zip(names, ages) # タプルの要素を取得 for val in tp: print(val)
実行結果:
('taro', 25) ('hanako', 30) ('jiro', 27)
このようにタプルとして取得することができました!
タプルについては以下の記事でも詳しく解説しています!
まとめ
ここでは、複数のリストの値を一度に取得できるzip関数について以下の内容を解説しました。
- zip関数とは
- zip関数の使い方
- 2つ以上のリストを指定する
- リストをタプルとして結合
zip関数を使用すれば、複数のリストのインデックスをまとめて取得できたり、結合することができますので非常に便利です。
もし、zip関数の使い方を忘れてしまったら、この記事を思い出してくださいね。