Evaluación diferida con lambda en Python
En un bucle, estoy intentando diferir la comparación de los dos valores () s de dos Nodos para un momento posterior.
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 se llame, pero con los enlaces de variables correctos? Y las expresiones en la lambda no son necesariamente todas iguales ... hay un montón de otras expresiones más involucradas.
¡Gracias por cualquier ayuda!