Ich versuche grundsätzlich, mit einem Listenverständnis mit diesem elementaren Code-Code herumzukommen. Im Versuch, ein Listenelement durch den Wert des Listenelementes zu duplizieren:Listenelemente mehrfach mit Listenverständnis vervielfältigen
y = [1, 2, 0, 1]
x = []
for i in y:
for j in range(i):
x.append(i)
# Desired output
>>> [1, 2, 2, 1]
x = [i for _ in range(i) for i in y]
# Wrong output
>>> [1, 2, 0, 1]
# Right output
x = [j for j in y for _ in range(j)]
>>> [1, 2, 2, 1]
Ich kann nicht scheinen, um meinen Kopf zu umgehen, warum ich den falschen Ausgang für das zweite Beispiel erhalten. Könnte jemand erklären, was hier falsch ist. Vielen Dank.
Ihr erstes Verständnis '[i für _ in Bereich (i) für i in y]' gibt einen Fehler bei der Ausführung (Nämlich, Name 'i' ist nicht definiert '). In verschachtelten Listenkompromittierungen gehen Schleifen von außen nach innen. – Rahul
@Rahul Es würde diesen Fehler nicht auslösen, da die 'for'-Schleife in den vorherigen Zeilen den Wert von 'i' verlieren wird. – Selcuk
Siehe auch http://StackOverflow.com/a/17657966/4014959 –