找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2447|回复: 2

[求助] 关于for循环机制

10

主题

19

帖子

19

积分

贫民

积分
19
执着偏爱 发表于 2017-9-24 00:10:27 | 显示全部楼层 |阅读模式
最近看到了迭代,想问一下for循环过程,比如:
for i in L,内部是先进行I=iter(L),然后再进行i=next(I)直到引发StopIteration是么
回复

使用道具 举报

0

主题

1

帖子

1

积分

贫民

积分
1
sylardie 发表于 2017-9-25 09:47:17 | 显示全部楼层
首要要明白可迭代对象和迭代器的区别.
一个实现了__iter__方法和__next__方法的对象,就是迭代器。
        取迭代器: 迭代器 = iter(对象)
        使用next(迭代器)来依次调用下一个可迭代对象(取值)。自动调用__next__方法。
        最后还需要 raise StopIteration.
上面三者结合在一起就是for循环

for item in Iterable 循环的本质就是先通过iter()函数获取可迭代对象Iterable的迭代器,然后对获取到的迭代器不断调用next()方法来获取下一个值并将其赋值给item,当遇到StopIteration后循环结束
回复 支持 1 反对 0

使用道具 举报

10

主题

19

帖子

19

积分

贫民

积分
19
执着偏爱  楼主| 发表于 2017-9-25 21:53:34 | 显示全部楼层
sylardie 发表于 2017-9-25 09:47
首要要明白可迭代对象和迭代器的区别.
一个实现了__iter__方法和__next__方法的对象,就是迭代器。
        取迭代 ...

清楚了,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表