ループでは、後で2つのノードの2つのvalue()を比較することをやめようとしています。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
結果はすべてTrueです(すべてのlambdaについてi、j == 2,5です)。実際に呼び出されるまではラムダの実行を延期することはできますが、正しい変数バインディングを使用することはできますか?ラムダの表現は必ずしも平等というわけではありません。他にも多くの表現があります。
ありがとうございました!
あなたがしようとしていることは本当にわかりません。ラムダ式はここで私には不要です。なぜresults.append(nodes [i] .value()== nodes [j] .value()) 'を実行できないのですか? – JAB