我的理解是,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很陌生。