In un ciclo, sto tentando di rinviare il confronto dei due valori() s di due nodi in un secondo momento.Valutazione differita con lambda in Python
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
I risultati sono tutto vero (perché i, j == 2,5 per tutta la lambda). Come posso rinviare l'esecuzione del lambda fino a quando non viene effettivamente chiamato, ma con le associazioni di variabili corrette? E le espressioni nel lambda non sono tutte necessariamente uguaglianza ... ci sono un sacco di altre espressioni più coinvolte.
Grazie per qualsiasi aiuto!
Non sono proprio sicuro di cosa stai cercando di fare. L'espressione lambda mi sembra inutile qui. Perché non puoi semplicemente fare 'results.append (nodi [i] .value() == nodi [j] .value())'? – JAB