python生成器及迭代器

Posted jl_bai

tags:

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

一.迭代器

迭代器是访问集合元素的一种方式

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()

字符串,列表或元组对象都可用于创建迭代器

特点:

  1. 访问者不需要关心迭代器内部的结构,仅需通过next()方法不断去取下一个内容
  2. 不能随机访问集合中的某个值 ,只能从头到尾依次访问
  3. 访问到一半时不能往回退
  4. 便于循环比较大的数据集合,节省内存  
>>> li = [1,2,3]
>>> it = iter(li)
>>> print(next(it))
1
>>> print(next(it))
2
>>> print(next(it))
3

  迭代器可以使用for循环进行遍历

>>> li = [1,2,3]
>>> it = iter(li)
>>> for i in it:
...     print(i)
...
1
2
3

二.生成器

  一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator)

  如果函数中包含yield语法,那这个函数就会变成生成器

  生成器运作:

    当达到一个真正的返回或者函数结束没有更多值返回(当调用next()),一个StopIteration异常就会抛出

def func():
    yield 1
    yield 2
    yield 3
    yield 4
>>> temp = func()
>>> temp.__next__()
1
>>> temp.__next__()
2
>>> temp.__next__()
3
>>> temp.__next__()
4
>>> temp.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
def frang(n):
    start = 0
    while start < n:
        yield start
        start += 1

valu = frang(5)
n1 = valu.__next__()
n2 = valu.__next__()
print(n1,n2)

 

 

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

迭代器和生成器(python3入门)

python-迭代器(next(),iter()函数)和生成器(yield函数)

python-迭代器(next(),iter()函数)和生成器(yield函数)

python-迭代器(next(),iter()函数)和生成器(yield函数)

python基础之三大器中迭代器和生成器

python迭代器与生成器