Manchmal möchten wir die Indizes für gepaarte Listen kennen. In diesem Fall können wir enumerate() über zip() verwenden. Es ist jedoch wichtig zu verstehen, was jede dieser Funktionen tut. zip gibt ein Tupel für jedes Elementpaar von Listenelementen zurück. enumerate gibt ein Tupel für jedes Element einer Liste zurück. Daher wird die resultierende Struktur ein Tupel von Tupeln sein:
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))]
# Daher müssen wir über die Elemente mit Tupeln iterieren:
for i, (item1, item2) in enumerate(zip(a, b)):
print(f'Index: {i} => a[i]={item1} und b[i]={item2}')
# Index: 0 => a[i]=1 und b[i]=5
# Index: 1 => a[i]=2 und b[i]=6
# Index: 2 => a[i]=3 und b[i]=7
# Index: 3 => a[i]=4 und b[i]=8
Beachte, wie item1 und item2 im for-Schleife zu einem Tupel zusammengefasst werden.
Herausforderung
Gegeben sind 3 Listen, jede in einer separaten Zeile. Du sollst eine neue Liste erstellen, die die Summe der Elemente der 3 Listen darstellt, wobei die Werte an ungeraden Positionen übersprungen werden (die Indizierung beginnt bei 0).
Die Eingabe enthält 3 Zeilen – jede enthält Zahlen, die durch ein Leerzeichen getrennt sind.
Das Programm soll eine einzelne Zeile ausgeben – die resultierende Liste.