没有合适的资源?快使用搜索试试~ 我知道了~
python生成器和迭代器区别
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
2 下载量 126 浏览量
2020-12-20
23:18:03
上传
评论 1
收藏 54KB PDF 举报
温馨提示
试读
3页
一、生成器 1.1 什么是生成器 generator:一边生成一边计算后面元素的机制,称为生成器,生成器里面保存的是算法,只有需要用到才会计算后面的值 1.2 通过列表生成式创建生成器 我们可以将列表生成式的中括号改成小括号就创建了一个生成器 list = [i for i in range(10)] print(type(list)) # gen = (i for i in range(10)) print(type(gen)) # 1.3 通过函数创建生成器 带有yield的函数称为函数生成器 下面通过代码实现一个斐波那契数列(除第1个,第2个数外,其他的数都是前两个数相加) e
资源推荐
资源详情
资源评论
python生成器和迭代器区别生成器和迭代器区别
一、生成器一、生成器
1.1 什么是生成器什么是生成器
generator:一边生成一边计算后面元素的机制,称为生成器,生成器里面保存的是算法,只有需要用到才会计算后面的值
1.2 通过列表生成式创建生成器通过列表生成式创建生成器
我们可以将列表生成式的中括号改成小括号就创建了一个生成器
list = [i for i in range(10)] print(type(list)) #
gen = (i for i in range(10))
print(type(gen)) #
1.3 通过函数创建生成器通过函数创建生成器
带有yield的函数称为函数生成器
下面通过代码实现一个斐波那契数列(除第1个,第2个数外,其他的数都是前两个数相加) eg: 1, 2, 3, 5, 8, 13, 21, 34, 55, …
斐波那契数列代码:
# 实现100以内的斐波那契数
def fib(max):
a, b = 1, 2
n = 0 # 斐波那契数
print(str(a) + "" + str(b))
while n < max:
n = a + b
a = b #把b的旧值传给a
b = n #把相加之后的值传给新的b值
yield n # 程序走到这里就会暂停下来,返回n到函数外,等下一次调用next()的时候继续执行
for i in fib(100):
print(i)
运行结果:
1
2
3
5
8
13
21
34
55
89
144
这里非常有必要说一下带有yeild 关键字的生成器函数的执行流程,当调用一次next()的时候,生成器就会执行,碰到yield会先
把值返回给外部(这里返回到的其实是i,然后print(i)打印的就是相加之后的值),当再次调用的时候,生成器会从上次中断的地
方继续执行。
1.4 取出生成器里面的元素取出生成器里面的元素
1.通过调用next()方法取出
gen = (i for i in range(10))
gen.next()
2.通过使用for循环取出
gen = (i for i in range(10))
for i in gen:
print(i)
资源评论
weixin_38598213
- 粉丝: 2
- 资源: 854
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功