1. はじめに
Pythonで複数のリストを同時に扱いたい場面はよくあります。例えば、名前と年齢、商品と価格など、複数の情報をペアで処理したいときに便利なのが、zip()
関数です。
本記事では、Python|複数のリストをzipでまとめる方法について、基本的な使い方から応用例、注意点まで丁寧に解説します。
特に初心者が理解しやすいよう、実行結果付きのコードサンプルを豊富に用意しています。Pythonのリスト操作をステップアップさせたい方は、ぜひ最後までご覧ください。
2. zip()関数の基本と使い方
2-1. zip()の基本構文と動作
zip()
関数は、複数のイテラブル(リスト、タプル、文字列など)を同時に処理するためのPythonの組み込み関数です。
各イテラブルの同じインデックスの要素をまとめて、タプルとして返します。
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 22]
zipped = zip(names, ages)
print(list(zipped))
実行結果:
[('Alice', 25), ('Bob', 30), ('Charlie', 22)]
2-2. forループとの組み合わせ
zip()はfor文と併用すると、複数のリストを同時にループ処理するのに非常に便利です。
for name, age in zip(names, ages):
print(f"{name} is {age} years old")
実行結果:
Alice is 25 years old
Bob is 30 years old
Charlie is 22 years old
3. よくある使い方・応用例
3-1. 複数のリストから辞書を作る
2つのリストから辞書を作成するには、dict()
とzip()
を組み合わせるのが一般的です。
keys = ["name", "age", "city"]
values = ["Alice", 25, "Tokyo"]
data = dict(zip(keys, values))
print(data)
実行結果:
{'name': 'Alice', 'age': 25, 'city': 'Tokyo'}
3-2. zipを使ってインデックス付きループ
enumerate()
とzip()
を組み合わせることで、インデックス付きのループも可能です。
products = ["apple", "banana", "cherry"]
prices = [100, 80, 120]
for i, (product, price) in enumerate(zip(products, prices)):
print(f"{i+1}. {product}: {price} yen")
実行結果:
1. apple: 100 yen
2. banana: 80 yen
3. cherry: 120 yen
3-3. zipで3つ以上のリストをまとめる
zip()は3つ以上のリストにも対応しています。
subjects = ["Math", "English", "Science"]
scores1 = [90, 85, 88]
scores2 = [78, 92, 84]
for subject, s1, s2 in zip(subjects, scores1, scores2):
avg = (s1 + s2) / 2
print(f"{subject} average score: {avg}")
実行結果:
Math average score: 84.0
English average score: 88.5
Science average score: 86.0
4. 注意点・エラー対策
4-1. リストの長さが異なる場合
zip()
は、もっとも短いリストの長さに合わせて処理されるため、要素が不足しているリストは無視されます。
これによりデータが欠損する可能性があるため、事前にリストの長さを確認することをおすすめします。
a = [1, 2, 3]
b = ['a', 'b']
print(list(zip(a, b)))
実行結果:
[(1, 'a'), (2, 'b')]
4-2. 全リストを最後まで使い切りたい場合
全ての要素を使い切りたい場合は、itertools.zip_longest()
を使う方法もあります(標準ライブラリ)。
from itertools import zip_longest
a = [1, 2, 3]
b = ['a', 'b']
result = list(zip_longest(a, b, fillvalue=None))
print(result)
実行結果:
[(1, 'a'), (2, 'b'), (3, None)]
5. まとめ
この記事では、Pythonで複数のリストをzipでまとめる方法について、基本的な使い方から応用的な活用、注意点までを幅広く解説しました。
zip()はコードをシンプルに保ちつつ、複数データを効率よく処理できる非常に強力なツールです。
データの整合性に注意しながら、for文や辞書変換など実務でも積極的に活用してみましょう。
学習のコツ:まずは短いリストで動作を確認し、動的にリストを生成したり、辞書との連携に応用してみると理解が深まります。