操作dict的时候遇到这样的问题 values() 返回列表, itervalues() 返回
iterator. 但是很多应用场景都一样。有非此不可的例子吗?
sum(d.values()) == sum(d.itervalues), max() 也一样
答案是, list 占用内存,因为在调用的时候已经计算好了,iterator/generator 在 for in
时候调用只能向前一次 (moving forward only)
两片比较好的教学文章:
-
(译)Python关键字yield的解释
http://pyzh.readthedocs.org/en/latest/the-python-yield-keyword-explained.html -
Python yield
使用浅析
http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
相比之下,java 的 thread.yield 是让步 cpu 调度的