python zip 使い方

Python
本ページはプロモーションが含まれています

はじめに

今回は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からリストに戻したりと色々な使い方がありますので参考にしていただければと思います。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました