我的理解是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很新。
答案 0 :(得分:0)
生成器表达式返回一个迭代器,您只能迭代一次。尝试在第一次之后迭代迭代器将始终将其视为空。