W pętli, próbuję odroczyć porównanie dwóch wartości() s dwóch węzłów do późniejszego czasu.Odroczona ocena z lambda w Pythonie
class Node():
def __init__(self, v):
self.v = v
def value(self):
return self.v
nodes = [Node(0), Node(1), Node(2), Node(3), Node(4), Node(2)]
results = []
for i in [0, 1, 2]:
j = i + 3
results.append(lambda: nodes[i].value() == nodes[j].value())
for result in results:
print result
Wszystkie wyniki są prawdziwe (ponieważ i, j == 2,5 dla wszystkich lambdas). Jak mogę odłożyć wykonanie lambda, dopóki nie zostanie wywołane, ale z poprawnymi powiązaniami zmiennych? A wyrażenia w lambda niekoniecznie oznaczają równość ... jest wiele innych, bardziej zaangażowanych wyrażeń.
Dzięki za pomoc!
Nie jestem do końca pewien, co próbujesz zrobić. Wyrażenie lambda wydaje mi się tu niepotrzebne. Dlaczego nie możesz po prostu wykonać polecenia 'results.append (węzły [i] .value() == węzły [j] .value())'? – JAB