在python中有生成器的概念,请教一个问题? 20

defiter_something():result=[]forxinrange(21):result.append(x)returnresulttemp=iter_so... def iter_something():
result = []
for x in range(21):
result.append(x)
return result

temp=iter_something() #调试代码
print(temp) #调试代码

==========================================
以上的代码怎么使用生成器中的 yield 代替其中的某些部分,非懂勿扰,感谢分享!
Python中引入yield的作用是什么,具体使用在什么方面呢,谢谢!
展开
 我来答
在清水塘打篮球的花生
2018-05-14 · TA获得超过925个赞
知道小有建树答主
回答量:4842
采纳率:5%
帮助的人:163万
展开全部
1. 迭代器协议

由于生成器自动实现了迭代器协议,而迭代器协议对很多人来说,也是一个较为抽象的概念。所以,为了更好的理解生成器,我们需要简单的回顾一下迭代器协议的概念。
迭代器协议是指:对象需要提供next方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代

可迭代对象就是:实现了迭代器协议的对象

协议是一种约定,可迭代对象实现迭代器协议,Python的内置工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象。

举个例子:在所有语言中,我们都可以使用for循环来遍历数组,Python的list底层实现是一个数组,所以,我们可以使用for循环来遍历list。如下所示:
>>> for n in [1, 2, 3, 4]:
... print n

但是,对Python稍微熟悉一点的朋友应该知道,Python的for循环不但可以用来遍历list,还可以用来遍历文件对象,如下所示:
>>> with open(‘/etc/passwd’) as f: # 文件对象提供迭代器协议
... for line in f: # for循环使用迭代器协议访问文件
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式