Pythonで複数のリストをまとめて処理する:zip()

zip()は複数のシーケンスをまとめて処理することができるので非常に便利です。

リストをまとめる

以下のプログラムはzip()を使ってまとめる例です。

name_list = ["Jhon", "Mike", "Bob"]
age_list = [23, 31, 28]
result = zip(name_list, age_list)
print result # [('Jhon', 23), ('Mike', 31), ('Bob', 28)]

上のプログラムを実行するとタプルのリストに変換されます。

もしzip()の引数の要素数が異なる場合は、要素数が小さい方に合わせられ残りの要素を捨てられます。

name_list = ["Jhon", "Mike", "Bob"]
age_list = [23, 31]
result = zip(name_list, age_list)
print result # [('Jhon', 23), ('Mike', 31)]

このようにname_listの"Bob" という3番目の要素が無くなっていることが確認できます。

リストをまとめてループ処理を行う

zip()を使えばループ処理の際に2つのリストをインデックス無しで同時に扱えるので便利です。

name_list = ["Jhon", "Mike", "Bob"]
age_list = [23, 31, 28]

for (name, age) in zip(name_list, age_list):
    print str(name) + ":" + str(age)

上のプログラムの実行結果は以下のようになります。

Jhon:23
Mike:31
Bob:28