En un ciclo, estoy tratando de diferir la comparación de los dos valores() de dos nodos para un momento posterior.Evaluación diferida con lambda en 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
Los resultados son todos verdaderos (porque i, j == 2,5 para todas las lambdas). ¿Cómo puedo diferir la ejecución de la lambda hasta que realmente se llame, pero con los enlaces de variable correctos? Y las expresiones en el lambda no son necesariamente necesariamente igualdad ... hay un montón de otras expresiones más involucradas.
¡Gracias por cualquier ayuda!
No estoy muy seguro de lo que estás tratando de hacer. La expresión lambda me parece innecesaria aquí. ¿Por qué no puedes hacer 'results.append (nodes [i] .value() == nodes [j] .value())'? – JAB