私の理解では、Python ジェネレーターの式は遅延評価された内包表記を返し、基になる辞書が変更されると辞書のビュー オブジェクトが更新されます。
次のコードが与えられた場合 (Python 2.7.6 Windows):
d = {}
gt_three = (x for x in d.viewkeys() if x > 3)
print list(gt_three)
d[1] = 'one'
d[4] = 'four'
print list(gt_three)
次のような出力が期待されます。
[]
[4]
代わりに、私は受け取っています:
[]
[]
ディクショナリに追加した後にジェネレーターを再作成するか、ビュー自体を印刷すると、期待される出力が表示されます。ジェネレーターについて理解していないことは何ですか? 私はpythonが初めてです。