Pythonのzip()関数によるリストの同時反復処理
Pythonのzip()関数を用いると、複数のリストやタプルなどのイテラブルオブジェクトを同時に反復処理することができます。この関数は、各イテラブルから要素を一つずつ取り出し、それらをタプルとしてグルーピングします。この機能を使えば、複数のデータセットに対して同時に操作を行うことが簡単にできます。
例1: 2つのリストの要素を同時に処理する
list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] for number, letter in zip(list1, list2): print(f"{number} is matched with {letter}")
このコードは、list1の各要素とlist2の対応する要素を組み合わせて出力します。出力結果は以下の通りです。
1 is matched with a 2 is matched with b 3 is matched with c
例2: 3つのリストを同時に反復処理する
names = ["Alice", "Bob", "Cathy"] ages = [25, 30, 35] jobs = ["Engineer", "Doctor", "Artist"] for name, age, job in zip(names, ages, jobs): print(f"{name} is {age} years old and works as a {job}")
このコードは、3つのリストを同時に反復処理し、各人の名前、年齢、職業を一つの文にまとめて出力します。出力結果は以下の通りです。
Alice is 25 years old and works as an Engineer Bob is 30 years old and works as a Doctor Cathy is 35 years old and works as an Artist
例3: リストの長さが異なる場合の処理
fruits = ["apple", "banana", "cherry", "date"] colors = ["red", "yellow", "purple"] for fruit, color in zip(fruits, colors): print(f"The {fruit} is {color}")
このコード例では、fruitsリストがcolorsリストよりも長いですが、zip()関数は最短のイテラブルの長さに合わせて処理を行います。そのため、’date’に対応する色は出力されません。出力結果は以下の通りです。
The apple is red The banana is yellow The cherry is purple
以上の例から、zip()関数は複数のリストを効率的に同時に扱う場合に非常に便利であることがわかります。ただし、イテラブルの長さが異なる場合は、最短の長さに合わせて処理される点に注意が必要です。