zip リスト
Pythonの最大の利点の一つは、そのデータ型を操作するための豊富なツールセットを提供していることです。複数のリストを扱うとき、これらを繰り返し処理し、すべてのリストの値に基づいて何らかの操作を行う必要が生じることがあります。これは、インデックスを使って要素にアクセスすることで行うこともできますし、組み込み関数
zip
を使うこともできます。heights = [180, 190, 178]
weights = [89, 92, 77]
for i in range(len(heights)):
h, w = heights[i], weights[i]
print(h, '=>', w)
heights = [180, 190, 178]
weights = [89, 92, 77]
for h, w in zip(heights, weights):
print(h, '=>', w)
zip
関数は、渡されたリストの要素からタプルを作成します。任意の数のリストを扱うことができます。つまり、zip(list1, list2, list3, ..., listn)
のようにすることができます。zip
にn
個のリストを渡せば、それぞれn
個の要素を含むタプルが生成されます。ただし、最も短いリストの長さまで要素をまとめることに注意してください。したがって、もし一方が他方より短い2つのリストを渡した場合、長い方のリストの余分な要素は無視されます。
もしこれに厳密になり、長いリストが切り捨てられることを許したくない場合は、追加の引数
strict=True
を指定することで、Pythonにエラーを投げさせることができます:heights = [180, 190]
names = ['Bob', 'Liza', 'Anna']
for h, name in zip(heights, names, strict=True):
print(name, '=>', h)
# ValueError: zip() の引数2が引数1よりも長いです
チャレンジ
入力には3つのリストがあり、それぞれ別の行に含まれています。リストの要素はスペースで区切られています。これらのリストが同じ数の要素を持つことは保証されています。
プログラムは、それら3つのリストの対応する要素の積を含む新しいリストを出力する必要があります。
入力 | 出力 |
1 2 3
4 5 6
1 1 1 | 4 10 18 |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB