はじめに
今回はPythonのZipの使い方についてです。
意外と使ったことがなかったのですが、使ってみると便利だったので備忘録として共有します。
簡単な使い方やサンプルソースやTipsなどになっているので必要な箇所だけを参考にしていただければと思います。
Pythonのzipとは
zipとは
zip関数は、複数のイテラブルオブジェクト(リスト、タプル、文字列など)を引数として取り、それらの各要素をタプルにまとめた新しいイテラブルを生成します。
zipはどういう時に使うと便利か
zip関数は次の様な時に使うと便利です
- 複数のリストを同時にループ処理したい場合
- 複数のデータセットを一つにまとめたい場合
- 複数のリストをキーと値のペアにしたい場合
サンプルソース
サンプルソースではいくつかのパターンを挙げています。
基本的な使い方
次のソースコードはZipの基本的な使い方です。
2つのリストをタプルにまとめています。
# Zipの基本的な使い方
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = zip(list1, list2)
print(list(zipped)) # [(1, 'a'), (2, 'b'), (3, 'c')]
あこれを実行すると
[(1, 'a'), (2, 'b'), (3, 'c')]
とリストがまとめられている事がわかります。
複数のリストを同時にループ処理する例
names = ['Alice', 'Bob', 'Charlie']
scores = [85, 92, 78]
for name, score in zip(names, scores):
print(f"{name}: {score}")
これを実行すると
Alice: 85
Bob: 92
Charlie: 78
となります。
リストを辞書に変換する例
次はリストを辞書タイプに変換する例です。
keys = ['name', 'age', 'gender']
values = ['Alice', 30, 'Female']
dictionary = dict(zip(keys, values))
print(dictionary) # {'name': 'Alice', 'age': 30, 'gender': 'Female'}
print(type(dictionary))
これを実行すると
{'name': 'Alice', 'age': 30, 'gender': 'Female'}
<class 'dict'>
となります。辞書の形式になっていることも分かります。
ZipのTips
Zipを元のリストに戻す
zip
関数と*
オペレータを組み合わせることで、元のリストに戻すこともできます。
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
zipped = list(zip(list1, list2))
list1_recovered, list2_recovered = zip(*zipped)
print(list(list1_recovered)) # [1, 2, 3]
print(list(list2_recovered)) # ['a', 'b', 'c']
実行結果は
[1, 2, 3]
['a', 'b', 'c']
となります。
長さが異なるイテラブルをZipする場合
zip
関数は、最短のイテラブルに合わせて動作します。そのため、長さが異なる場合は注意が必要です。
list1 = [1, 2]
list2 = ['a', 'b', 'c']
print(list(zip(list1, list2))) # [(1, 'a'), (2, 'b')]
この実行結果は
[(1, 'a'), (2, 'b')]
となります。
list1の長さになるのでlist2の最後の部分がなくなってしまいます。
さいごに
今回はPythonのZipについての使い方やTipsなどについてでした。
基本的な使い方以外にもZipからリストに戻したりと色々な使い方がありますので参考にしていただければと思います。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。