Python迭代器

一、文件迭代器

readline()每次读取文件的一行,每次调用readline方法会自动到下一行,到文件末尾时,会返回空字符串。

_next_()方法同readline()一样,只是到最后一行会引发stopiteration。

逐行读取文本的的最佳方式是用for循环每轮自动调用next,for line in open(文件名)。

readlines()一次将文件读取到内存,如果文件过大,会导致计算机内存空间不够用,效果差。

手动迭代:iter和next

f=open(文件名)

f._next_() 与next(f)的效果一样,每次调用读取一行

从技术角度讲,for循环开始时,会通过它传给iter内置函数,以便从可迭代对象中获取一个迭代器,返回的对象含有需要的next方法。

>>> L=[1,2,3]
>>> I=iter(L)   #获取一个迭代对象

>>> next(I)
1
>>> next(I)
2
>>> next(L)
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
next(L)
TypeError: 'list' object is not an iterator

最初的一步对于文件对象来说是不必要的,因为文件对象有自己的迭代器,即文件对象有自己的—_next_()方法。

>>>f=open(文件名) 

>>>iter(f) is f

True

>>>L=[1,2,3]

>>>iter(L) is L

False

posted on 2016-07-18 20:38  Moady  阅读(397)  评论(0编辑  收藏  举报

导航