python-迭代器 和 生成器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-迭代器 和 生成器相关的知识,希望对你有一定的参考价值。

迭代器是访问集合元素的一种方式。迭代器适合遍历一些巨大或无限的集合,比如几个G的文件。迭代器具有以下特点:

1. 访问者不需要关心迭代器内部的结构,只需通过__next__()方法不断取下一个内容

2. 不能随机访问集合中的某个值,只能从头到尾依次访问

3. 访问只能向前,不能后退

4. 便于循环比较大的数据集合, 节省内存

比如:

with open("test.txt", r) as f:         # f 就是迭代器
    for line n f:           
        print(line)

迭代器的方法:

iter()   用于生成迭代器

>>> a = abcdeig
>>> iter(a)
<str_iterator object at 0x00000000029ADE48>
>>> iter([1,2,3,4,5])
<list_iterator object at 0x00000000029ADEB8>

__next__()  取下一个元素

>>> a = abcdeig
>>> a = iter(a)
>>> a.__next__()
a
>>> a.__next__()
b
>>> a.__next__()
c
>>> a.__next__()
d
>>> a.__next__()
e
>>> a.__next__()
i
>>> a.__next__()
g
>>> a.__next__()                        #没有元素时,会报Stop Iteration错误,表示没有值可以取了
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module>
StopIteration

生成器: 如果一个函数返回一个迭代器,那么这个函数就是生成器;如果函数中包含yield语法,那么这个函数就会变成生成器。

下面代码是生成生成斐波那契数列的生成器:

def fab(max):
    n, a, b = 0, 0, 1
    while n < max:
        yield b
        a, b = b, a + b
        n = n + 1

以上是关于python-迭代器 和 生成器的主要内容,如果未能解决你的问题,请参考以下文章

python函数:迭代器和生成器

Python中迭代器和生成器的区别与联系

Python3 迭代器与生成器

Python的高级特性(切片,迭代,生成器,迭代器)

python编程系列---可迭代对象,迭代器和生成器详解

Python迭代器和生成器,装饰器