zip()をfor文の中で使うシーンはよくあるので、
zip()は必ず理解しておくべき関数だと思います。
たとえば、2017年の野球の結果を使ってみます。
1 2 3 4 5 6 7 8 9 10 11 |
>>> central = ['広島','阪神','DeNA','巨人','中日','ヤクルト'] >>> pacific = ['ソフトバンク','西武','楽天','オリックス','日本ハム','ロッテ'] >>> for c, p in zip(central, pacific): ... print(c, p) ... 広島 ソフトバンク 阪神 西武 DeNA 楽天 巨人 オリックス 中日 日本ハム ヤクルト ロッテ |
centralというリストの0番目と、pacificというリストの0番目がセットとなり、あとは同様にセットとなっていくという関数がzip()です。
タプルでも同じようにできます。
1 2 3 4 5 6 7 8 9 10 11 |
>>> central = '広島','阪神','DeNA','巨人','中日','ヤクルト' >>> pacific = 'ソフトバンク','西武','楽天','オリックス','日本ハム','ロッテ' >>> for c, p in zip(central, pacific): ... print(c, p) ... 広島 ソフトバンク 阪神 西武 DeNA 楽天 巨人 オリックス 中日 日本ハム ヤクルト ロッテ |
zip()を使って、タプルのペアをつくることができます。
1 2 |
>>> list( zip(central, pacific) ) [('広島', 'ソフトバンク'), ('阪神', '西武'), ('DeNA', '楽天'), ('巨人', 'オリックス'), ('中日', '日本ハム'), ('ヤクルト', 'ロッテ')] |
dict()の中にzip()を入れると、辞書型にできる。
1 2 3 4 5 6 7 8 |
>>> person = '赤ちゃん', '子ども', '大人' >>> drink = 'ミルク', 'ジュース', 'お酒' >>> dict( zip(person, drink) ) {'赤ちゃん': 'ミルク', '子ども': 'ジュース', '大人': 'お酒'} >>> what_to_drink = dict( zip(person, drink) ) >>> what_to_drink['子ども'] 'ジュース' |
ベクトルの計算にもzip()が出てきます。
たとえば、2つのベクトル[1, 2]と[2, 1]の和は[1 + 2, 2 + 1]で[3, 3]となります。
1 2 3 4 5 6 |
>>> def vector_add(v, w): ... """対応する要素の和""" ... return [v_i + w_i for v_i, w_i in zip(v, w)] ... >>> vector_add([1, 2], [2, 1]) [3, 3] |