Erstellen von Funktionen (oder Lambdas) in einer Schleife (oder Verständnis)Python

Python-Programme
Anonymous
 Erstellen von Funktionen (oder Lambdas) in einer Schleife (oder Verständnis)

Post by Anonymous »

Ich versuche, Funktionen innerhalb einer Schleife zu erstellen:

Code: Select all

functions = []

for i in range(3):
def f():
return i
functions.append(f)
Alternativ mit Lambda:

Code: Select all

functions = []

for i in range(3):
functions.append(lambda: i)
Das Problem besteht darin, dass am Ende alle Funktionen gleich sind. Anstatt 0, 1 und 2 zurückzugeben, geben alle drei Funktionen 2 zurück:

Code: Select all

print([f() for f in functions])
  • Erwartete Ausgabe: [0, 1, 2]
  • Tatsächliche Ausgabe: [2, 2, 2]
Warum passiert das und was muss ich tun, um 3 verschiedene Funktionen zu erhalten, die jeweils 0, 1 und 2 ausgeben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post