zipとenumerateの組み合わせ
時には、zipしたリストのインデックスを知りたいことがあります。その場合、
zip()
の上にenumerate()
を使用することができます。しかし、それぞれの関数が何をするかを理解することが重要です。zipはリスト要素のペアごとにタプルを返します。enumerateはリストの各要素に対してタプルを返します。したがって、結果の構造はタプルのタプルになります:a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
zip(a, b) # [(1, 5), (2, 6), (3, 7), (4, 8)]
enumerate(a) # [(0, 1), (1, 2), (2, 3), (3, 4)]
enumerate(b) # [(0, 5), (1, 6), (2, 7), (3, 8)]
enumerate(zip(a, b)) # [(0, (1, 5)), (1, (2, 6)), (2, (3, 7)), (3, (4, 8))]
# したがって、タプルを使って要素をループする必要があります:
for i, (item1, item2) in enumerate(zip(a, b)):
print(f'index: {i} => a[i]={item1} and b[i]={item2}')
# index: 0 => a[i]=1 and b[i]=5
# index: 1 => a[i]=2 and b[i]=6
# index: 2 => a[i]=3 and b[i]=7
# index: 3 => a[i]=4 and b[i]=8
item1
とitem2
がfor
ループ内でどのようにタプルにまとめられているかに注目してください。 チャレンジ
3つのリストがそれぞれ別の行に与えられています。これらから、新しいリストを作成してください。このリストは3つのリストの要素の合計を表し、インデックスが0から始まる奇数位置の値をスキップします。
入力は3行で、それぞれの行にはスペースで区切られた数字が含まれています。
プログラムは結果のリストを1行で出力する必要があります。
入力 | 出力 |
1 2 3 4
5 6 7 8
9 10 11 12 | 15 21 |
これを1行で解けますか 😎?
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB