首页 > 代码库 > 迭代 Iterate
迭代 Iterate
迭代:指按照某种顺序逐个访问列表中的每一项。比如:for语句
逐个访问:
lst = [‘q‘, ‘i‘, ‘w‘, ‘s‘, ‘i‘, ‘r‘]for i in lst: print (i), # , 消除print产生的"\n"符号
inter()函数 next()
文件迭代器
现在有一个文件,名称:208.txt,其内容如下:
Learn python with qiwsir.There is free python course.The website is:http://qiwsir.github.ioIts language is Chinese.
用迭代器来操作这个文件,我们在前面讲述文件有关知识的时候已经做过了,无非就是:
>>> f = open("208.txt")>>> f.readline() #读第一行‘Learn python with qiwsir.\n‘>>> f.readline() #读第二行‘There is free python course.\n‘>>> f.readline() #读第三行‘The website is:\n‘>>> f.readline() #读第四行‘http://qiwsir.github.io\n‘>>> f.readline() #读第五行,也就是这真在读完最后一行之后,到了此行的后面‘Its language is Chinese.\n‘>>> f.readline() #无内容了,但是不报错,返回空。‘‘
以上演示的是用readline()一行一行地读。当然,在实际操作中,我们是绝对不能这样做的,一定要让它自动进行,比较常用的方法是:
>>> for line in f: #这个操作是紧接着上面的操作进行的,请看官主要观察... print line, #没有打印出任何东西 ...
这段代码之所没有打印出东西来,是因为经过前面的迭代,指针已经移到了最后了。这就是迭代的一个特点,要小心指针的位置。
>>> f = open("208.txt") #从头再来>>> for line in f:... print line,... Learn python with qiwsir.There is free python course.The website is:http://qiwsir.github.ioIts language is Chinese.
这种方法是读取文件常用的。另外一个readlines()也可以。但是,需要有一些小心的地方,看官如果想不起来小心什么,可以在将关于文件的课程复习一边。
上面过程用next()也能够读取。
>>> f = open("208.txt")>>> f.next()‘Learn python with qiwsir.\n‘>>> f.next()‘There is free python course.\n‘>>> f.next()‘The website is:\n‘>>> f.next()‘http://qiwsir.github.io\n‘>>> f.next()‘Its language is Chinese.\n‘>>> f.next()Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration
如果用next(),就可以直接读取每行的内容。这说明文件是天然的可迭代对象,不需要用iter()转换了。
再有,我们用for来实现迭代,在本质上,就是自动调用next(),只不过这个工作,已经让for偷偷地替我们干了,到这里,列位是不是应该给for取另外一个名字:它叫雷锋。
还有,列表解析也能够做为迭代工具,在研究列表的时候,看官想必已经清楚了。那么对文件,是否可以用?试一试:
>>> [ line for line in open(‘208.txt‘) ][‘Learn python with qiwsir.\n‘, ‘There is free python course.\n‘, ‘The website is:\n‘, ‘http://qiwsir.github.io\n‘, ‘Its language is Chinese.\n‘]
至此,看官难道还不为列表解析所折服吗?真的很强大,又强又大呀。
其实,迭代器远远不止上述这么简单,下面我们随便列举一些,在python中还可以这样得到迭代对象中的元素。
>>> list(open(‘208.txt‘))[‘Learn python with qiwsir.\n‘, ‘There is free python course.\n‘, ‘The website is:\n‘, ‘http://qiwsir.github.io\n‘, ‘Its language is Chinese.\n‘]>>> tuple(open(‘208.txt‘))(‘Learn python with qiwsir.\n‘, ‘There is free python course.\n‘, ‘The website is:\n‘, ‘http://qiwsir.github.io\n‘, ‘Its language is Chinese.\n‘)>>> "$$$".join(open(‘208.txt‘))‘Learn python with qiwsir.\n$$$There is free python course.\n$$$The website is:\n$$$http://qiwsir.github.io\n$$$Its language is Chinese.\n‘>>> a,b,c,d,e = open("208.txt")>>> a‘Learn python with qiwsir.\n‘>>> b‘There is free python course.\n‘>>> c‘The website is:\n‘>>> d‘http://qiwsir.github.io\n‘>>> e‘Its language is Chinese.\n‘
迭代 Iterate
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。