【Pythonプログラミング】Zip関数を使いこなす

こんばんは。今日は、PythonのZip関数の使い方について整理しておこうと思います。

Zip関数の機能

zip関数は、複数のイテラブルオブジェクト(リスト、タプルなど)を1つの要素にまとめる場合に使われます。

例えば、

[0,1,2]というリストと[‘a’,’b’,’c’]というリストをまとめて[(0,’a’),(1,’b’),(2,’c)]という組み合わせを作りたい場合などに使います。これだと活用の用途がよくイメージできないかもしれませんが、自分はデータ分析で、値のマッピングの辞書を作る場合によく使います。([0,1,2]と[‘a’,’b’,’c’]をまとめて{0:’a’,1:’b’,2:’c’}を作る)

Pythonの公式ドキュメントによると、zip関数は以下の処理と等価との説明があります。

複数の要素の短い方の要素が尽きるまで結合を続けます。長い方の要素に合わせた結合を行い場合は、itertools.zip_longest()を使うべきと書かれています。

def zip(*iterables):
    # zip('ABCD', 'xy') --> Ax By
    sentinel = object()
    iterators = [iter(it) for it in iterables]
    while iterators:
        result = []
        for it in iterators:
            elem = next(it, sentinel)
            if elem is sentinel:
                return
            result.append(elem)
        yield tuple(result)

Zip関数を使った実装あれこれ

簡単な例ですが、実験してみます。

list1 = [0,1,2,3,4,5]
list2 = ['a','b','c','d','e']
zipped = zip(list1, list2)
zipped

実行結果は以下のように、zipオブジェクトが返ってきました。

<zip at 0x10f05ab40>

以下のように、取り出す形を指定することで中身が確認できるようになります。

## 辞書型で取り出す
dict(zipped)

## 実行結果
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e'}
## リスト型で取り出す
list(zipped)

## 実行結果
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]

以上、Zip関数の使い方でした!

最後までご覧いただきありがとうございました^^

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

Yuu113
初めまして。Yuu113と申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。