Python基礎~zip関数~

はじめに

こんにちは。風助です。

今回はzip関数について書いていきます。

zip関数とは

zipと聞くと皆さんは何を思い浮かべますか?
私はファイル形式です。ファイルを圧縮するとしたら大抵zip形式になるのではないでしょうか。

もしくはファスナーなんかを思い出す人もいるでしょう。ジッパーなんて言い方もしますからね。

Pythonにおけるzip関数は複数のイテラルオブジェクトの要素をまとめるための関数です。
[Aさん, Bさん, Cさん][北海道, 東京, 沖縄]という2つのリストを(Aさん, 北海道),(Bさん, 東京),(Cさん, 沖縄)とするようなイメージです。

zip関数の使い方

zip関数はforループと一緒に使われます。

List1 = ['Aさん', 'Bさん', 'Cさん']
List2 = ['北海道', '東京', '沖縄']

for List3 in zip(List1, List2):
    print(List3)

こんな感じです。この時の出力は以下の通り。

('Aさん', '北海道')
('Bさん', '東京')
('Cさん', '沖縄')

zip関数の引数に元のリストなどを入れます。それだけ。
また、元のリストは3つ以上でも可能です。

List1 = ['Aさん', 'Bさん', 'Cさん']
List2 = ['北海道', '東京', '沖縄']
List4 = ['20歳', '25歳', '30歳']

for List5 in zip(List1, List2, List4):
    print(List5)

この時の出力は以下の通り。

('Aさん', '北海道', '20歳')
('Bさん', '東京', '25歳')
('Cさん', '沖縄', '30歳')

簡単ですね。

2つのリストの要素の数が違うときは少ない方に合わせられます。

List2 = ['北海道', '東京', '沖縄']
List6 = ['Aさん', 'Bさん', 'Cさん', 'Dさん']

for List7 in zip(List6, List2):
    print(List7)

この時の出力は以下の通り。

('Aさん', '北海道')
('Bさん', '東京')
('Cさん', '沖縄')

Dさんの存在が消えてなくなりましたね。悲しいことです。

この時のように互いのリストの要素の数が違うとき、要素の数が多い方に合わせることができる関数もあります。zip_longest関数っていうやつです。こちらはかなりややこしそうなので別の投稿で。

また、元となるものはイテラルオブジェクトなので、リストじゃなくてもOKです。

List1 = ['Aさん', 'Bさん', 'Cさん']
List8 = (20, 25, 30)

for List9 in zip(List1, List8):
    print(List9)

これでも問題なく出力されます。

('Aさん', 20)
('Bさん', 25)
('Cさん', 30)

for文に落とし込まなくてもOK。

List1 = ['Aさん', 'Bさん', 'Cさん']
List2 = ['北海道', '東京', '沖縄']

List10 = zip(List1, List2)
print(List10)

zip関数はイテレータなのでprint()では出力できません。

<zip object at 0x00000198532CC400>

終わりに

今回はzip関数について書きました。
複数のリストをまとめるとなるとビッグデータの解析なんかでも使えるのかな?
そっちは疎いのでよくわかりませんが。

今回はここまで。皆さんの参考になっていると幸いです。

コメント

  1. TubeRaid より:

    Great content! Keep up the good work!

  2. Greetings! Very useful advice in this particular article!
    It is the little changes which will make the biggest changes.
    Many thanks for sharing!

  3. Greetings! This is my first visit to your blog! We are a team of volunteers and starting
    a new project in a community in the same niche. Your blog
    provided us valuable information to work on. You have done a outstanding job!

  4. zoritoler imol より:

    I have been reading out many of your articles and it’s nice stuff. I will surely bookmark your site.

タイトルとURLをコピーしました