生成器与迭代器和模块

本文探讨了Python中的斐波拉契数列如何通过生成器和迭代器来实现,解释了生成器是迭代器的一种,它们提供了一种惰性计算的方式,适用于处理大数据或无限序列。同时阐述了迭代器的定义和特性,强调for循环的本质是通过调用next()函数实现。最后提到了模块在Python编程中的重要性。
摘要由CSDN通过智能技术生成

著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,
任意一个数都可由前两个数相加得到:

斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:

在这里插入代码片def fid(max):
    n, a, b = 0, 0, 1
    while n < max:
        print(b)
        a, b = b, a + b
        n = n + 1
    return 'done'





    注意,赋值语句:

a, b = b, a + b



相当于:

t = (b, a + b) # t是一个tuple
a = t[0]
b = t[1]

但不必显示写出临时变量t就可以赋值。





上面的函数也可以输出斐波拉契数列的前N个数:

>>> fib(10)
1
1
2
3
5
8
13
21
34
55
done


仔细观察,可以看出,fib函数实际上是定义了斐波拉契数列的推算规则,可以从第一个元素开始,
推算出后续任意的元素,这种逻辑其实非常类似generator。

迭代器:

我们已经知道,可以直接作用于for循环的数据类型有以下几种:
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是generator,包括生成器和带yield的generator function。
这些可以直接用于for循环的对象统称为可代对象:Iterable.
可以使用isinstance()判断一个对象是否是Iteable对象:

在这里插入代码片>>> from collections import Iterable
>>> isinstance([],Iterable)
True
>>> isinstance({
   },Iterable)
True
>>> isinstance('abc',Iterable)
True
>>> isinstance((x 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值