1. ホーム 
  2. 備忘録 
  3. Python

zip関数

zip関数とは

複数のリストから同時に要素を抜き出したい時に、リストをひとまとめにして取り扱うのに便利な関数である

zip関数の使い方を以下に記載する


### 基本的な使い方
names = ['Hide', 'Masao', 'Yasuko']
ages = (34, 40, 31)
z = zip(names, ages)

# 中身はタプルが入ったイテレータなのでこのままでは表示できない
print(z, type(z))  # <zip object at 0x000001918F2E2040> <class 'zip'>
print(z[0], type(z))  # TypeError: 'zip' object is not subscriptable

# 個別にアクセスする場合はリストに変換するなどの方法が必要である
l = list(z)
print(l, type(l))  # [('Hide', 34), ('Masao', 40), ('Yasuko', 31)] <class 'list'>
print(l[0], type(l[0]))  # ('Hide', 34) <class 'tuple'>


### イテレータのまま要素を列挙する
days = ['Mon', 'Tue', 'Wed']
fruits = ['apple', 'banana', 'orange', 'OVER']
drinks = ['coffee', 'tea', 'beer']

# zip関数でまとめた要素を抜き出す
for day, fruit, drink in zip(days, fruits, drinks):
    print(day, fruit, drink)
# 結果
# Mon apple coffee
# Tue banana tea
# Wed orange beer


"""
zip関数では各リストの要素数が異なる場合、要素数が一番少ないものに合わせる点に注意する
(つまり、はみ出た要素については無視される)
"""