迭代器与生成器

1.迭代器

1)迭代是一个重复的过程,即每次重复为一次迭代,并且每次迭代的结果为下一次迭代的初始值

while True:

    print(1)

l1 = ['a','b','c','d']

num = 0

while num < len(l1):

    print(l1[num])

    num += 1

利用这个程序我们可以借助下标取出列表中的每一个元素,且这个过程就是一个迭代的过程

2)字典集合这种是没有办法利用下标取值的,因此Python解释器为我们提供了一种不依赖索引的取值方法

3)有._ _iter_ _()方法的叫做可迭代对象:列表、字符串、集合、字典、元组、文件

       有._ _next_ _()方法和._ _iter_ _()方法的叫做迭代器对象:只有文件

4)s2 = iter(s1)从可迭代对象变为迭代器对象

5)

info1 = iter(info)

a = 0

while a < len(info):此处需要些原来的字典,变为迭代器对象后字典没有长度

    print(next(info1))利用next取值

    a += 1

for data in iter(info):把info可迭代对象变为迭代器对象,并解决异常问题

    print(data)

2.生成器

生成器就是迭代器,在函数中出现yield关键字就是生成器

优点:生成器和列表很像,生成器同一时间只能存储一个值,比列表节省空间

缺点:只能向后取值,不能向前取值

return往后的代码将不会被执行

遇见yield关键字将暂停

def test():

    yield 1

    yield 2

    yield 3

    yield 4

    yield 5

res = test()   res为迭代器对象

print(next(res))

print(next(res))

print(next(res))

def test():

    for i in range(10):

        yield i

res = test()

for i in res:

    print(i)

原文地址:https://www.cnblogs.com/Agnostida-Trilobita/p/11053849.html