Python iterator/generator

操作dict的时候遇到这样的问题  values() 返回列表, itervalues() 返回 iterator. 但是很多应用场景都一样。有非此不可的例子吗?
sum(d.values()) == sum(d.itervalues), max() 也一样

答案是, list 占用内存,因为在调用的时候已经计算好了,iterator/generator 在 for in 时候调用只能向前一次 (moving forward only)
两片比较好的教学文章:
  1. (译)Python关键字yield的解释  http://pyzh.readthedocs.org/en/latest/the-python-yield-keyword-explained.html
  2. Python yield 使用浅析 http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/

相比之下,java 的 thread.yield 是让步 cpu 调度的
原文地址:https://www.cnblogs.com/bob-dong/p/14248208.html