Python|複数のリストをzipでまとめる方法

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文や辞書変換など実務でも積極的に活用してみましょう。

学習のコツ:まずは短いリストで動作を確認し、動的にリストを生成したり、辞書との連携に応用してみると理解が深まります。

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