【发布时间】:2013-01-03 10:18:49
【问题描述】:
考虑一下(Python 3.3):
a=enumerate([2,3,5])
print(list(a))
print(list(a))
你真的希望两个打印调用打印不同的东西吗? 我也没有。
如果将列表替换为set、tuple 或dict,也会发生同样的情况。如果你用map 或filter 替换enumerate 对象也会发生这种情况,但奇怪的是,如果你用range 替换它就不会。
也许这是一个功能。但这非常令人惊讶,没有记录(至少我无法找到任何关于它的信息),并且不一致(范围的工作方式不同)。你怎么看?
【问题讨论】:
-
我真的希望这两个打印调用打印不同的东西。
标签: python lazy-evaluation enumerate