码迷,mamicode.com
首页 > 其他好文 > 详细

迭代 Iterate

时间:2016-09-09 20:38:20      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:

迭代:指按照某种顺序逐个访问列表中的每一项。比如: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.io
Its 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.io
Its 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

标签:

原文地址:http://www.cnblogs.com/w2218/p/5857694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!