こんばんは。今日は、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関数の使い方でした!
最後までご覧いただきありがとうございました^^
コメントを残す