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!

Respuestas a la pregunta(3)

Su respuesta a la pregunta