码迷,mamicode.com
首页 > 编程语言 > 详细

python—迭代器与生成器

时间:2020-03-12 12:55:35      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:循环   span   yield   ace   迭代   color   fibonacci   bin   使用   

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

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

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

>>> l=[1,2]
>>> it=iter(l)    #将列表转换为迭代器对象
>>> type(it)
<class list_iterator>
>>> next(it)    #输出迭代器的下一个元素
1
>>> next(it)
2
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration    

迭代器对象可以用for循环来遍历

 

生成器 :使用了yield的函数称为生成器

    生成器是一个返回迭代器的函数,只能用于迭代操作

    在调用生成器运行的过程中,每次遇到yiled时函数会暂停并保存当前所有的运行信息,返回yiled的值,并在下一次执行next()方法时从当前位置继续运行

    调用一个生成器函数,返回一个迭代器对象

以下实例使用 yield 实现斐波那契数列:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/python3
 
import sys
 
def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n):
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

执行以上程序,输出结果如下:

1
0 1 1 2 3 5 8 13 21 34 55

python—迭代器与生成器

标签:循环   span   yield   ace   迭代   color   fibonacci   bin   使用   

原文地址:https://www.cnblogs.com/wuweixiong/p/12468284.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!