白菜药妆推荐# Fashion - 美丽时尚
q*x
1 楼
这个yield到底有啥好处?这里的例子怎么省内存了?readlines不还是要读入整个文件
吗?
http://stackoverflow.com/questions/7883962/where-to-use-yield-i
我的理解:
def func_0(input_list):
return [f(i) for i in input_list]
def func_1(input_list):
for i in input_list:
yield f(i)
这两个区别在于,func_0把所有的f(i)算好,返回。func_1创建一个对象,包含input_
list,函数f,迭代子iter。遍历这个对象时,动态计算f(i)。这样看上去只是lazy
evaluation,并没有省内存啊。
吗?
http://stackoverflow.com/questions/7883962/where-to-use-yield-i
我的理解:
def func_0(input_list):
return [f(i) for i in input_list]
def func_1(input_list):
for i in input_list:
yield f(i)
这两个区别在于,func_0把所有的f(i)算好,返回。func_1创建一个对象,包含input_
list,函数f,迭代子iter。遍历这个对象时,动态计算f(i)。这样看上去只是lazy
evaluation,并没有省内存啊。