【发布时间】:2017-11-24 07:16:47
【问题描述】:
我有一个包含 100 000 个元素的列表,并且我在该列表的末尾有一个元素 4。
在这一点上,这些方法有什么区别?
方法一:
def arr_f():
for i in arr:
if i==4:
yield i
arr=[........100k entries]
gen_ob=arr_f()
for i in gen_ob:
#do some op
方法二:
def arr_f():
for i in arr:
if i==4:
break
else:
return True
return False
在方法 2 中,我正在等待数字 4 来,如果我击中它就打破循环。在这种情况下,生成器是否比方法 2 有任何优势?
我对生成器的了解是它会即时产生一个值。 就我而言,我的方法 2 存储的元素是否比方法 1 多?
【问题讨论】: