在一個循環中,我試圖推遲比較兩個節點的兩個值()到以後的時間。在Python中使用lambda推遲評估
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,j == 2,5爲所有的lambda)。我如何推遲lambda的執行直到它被實際調用,但是使用正確的變量綁定? lambda中的表達式並不一定都是相等的......還有一些其他更多涉及的表達式。
感謝您的幫助!
我不確定你想要做什麼。這裏的lambda表達式對我來說似乎沒有必要。爲什麼不能只執行'results.append(nodes [i] .value()== nodes [j] .value())'? – JAB