python--可迭代对象、迭代器和生成器

迭代器

1.什么是迭代器?

不依赖于索引的取值方式
迭代是一个重复的过程,即每一次重复为一次迭代,并且每次迭代的结果都是下一次迭代的初始值

示例:

str1 = 'abcde'
count = 0
while count<len(str1)
    print(str1[count])
    count+=1

2.什么是可迭代对象?什么是迭代器对象?

#可迭代对象指的是内置有.__iter__方法的对象

'world'.__iter__
(4,5,6).__iter__
[1,2,3].__iter__
{'a':1}.__iter__
{'a','b'}.__iter__
open('a.txt').__iter__

#什么是迭代器对象?
可迭代对象执行obj.__iter__()得到的结果就是迭代器对象
而迭代器对象指的是即内置有__iter__又内置有__next__方法的对象

#文件类型是迭代器对象
open('a.txt').__iter__()
open('a.txt').__next__()

#总结:
迭代器对象一定是可迭代对象,而可迭代对象不一定是迭代器对象

生成器

  1. 函数中有yield
  2. 生成器内存id变为:例 <generator object Myread at 0x0000005BBF31F728>

生成器的应用

#将文件中的一行内容以指定的分隔符,分行打印,不用同时加载整行内容,节省内存

def back (f,splitter):
    str = ''
    while True:
        while splitter in str:
            num = str.index(splitter)
            yield str[:num]
            str = str[num+len(splitter):]
        newread = f.read(100)
        if not newread:
            yield str
            break
        str = str + newread

with open(r'D:untitleda.txt','r') as f:
    for i in back(f,splitter = '|'):
        print(i)

原文地址:https://www.cnblogs.com/du-z/p/11061235.html