Pythonのzip関数は、複数のイテラブル(リスト、タプル、セットなど)から要素を取り出し、対応する要素をペアとしてまとめるために使用されます。まとめられた要素はタプルとして返されます。
基本的な使い方
numbers = [1, 2, 3, 4, 5]
letters = ['A', 'B', 'C', 'D', 'E']
combined = zip(numbers, letters)
print(list(combined)) # [(1, 'A'), (2, 'B'), (3, 'C'), (4, 'D'), (5, 'E')]
上記の例では、numbersとlettersという2つのリストをzip関数で結合しています。zip関数の結果はイテラブルなオブジェクトであるため、list関数でリストに変換して表示しています。
2つ以上のリストを指定する
zip関数は2つ以上のリストのインデックスを取得することができます。
names = ['taro', 'hanako', 'jiro']
ages = [25, 30, 27]
address = ['tokyo', 'nagoya', 'kanagawa']
for name, age, addr in zip(names, ages, address):
print(name, age, addr)
インデックス数が異なる場合
zip関数で異なるインデックス数を指定した場合は、インデックス数が少ないリストの値が返され、その分の値は処理されません。
names = ['taro', 'hanako', 'jiro', 'takeshi']
ages = [25, 30, 27]
for name, age in zip(names, ages):
print(name, age)
タプルとして取得したい場合
zip関数はリストのインデックスを同時に取得することができますが、zip関数の結果をタプルとして取得することもできます。
names = ['taro', 'hanako', 'jiro', 'takeshi']
ages = [25, 30, 27]
# リストを結合する
tp = zip(names, ages)
# タプルの要素を取得
for val in tp:
print(val)
このように、Pythonのzip関数は非常に便利で、複数のリストやイテラブルなオブジェクトの要素を一度に取得できます。これにより、コードの可読性と効率性が向上します。.