前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python基础:迭代器与生成器

python基础:迭代器与生成器

作者头像
py3study
发布2020-01-08 17:32:58
2780
发布2020-01-08 17:32:58
举报
文章被收录于专栏:python3python3

一、迭代器

迭代器只能向前访问,不能后退 字典,列表,元组,字符串,range都是可以迭代的对象。

1、创建迭代器

`dict={1:3,2:4,3:5,4:6} key = iter(dict) print(key) print(next(key)) print(next(key))

values = iter(dict.values()) print(values) print(next(values)) print(next(values))

list= [1, 2, 3, 4, 5] list2 = iter(list) print(list2) print(next(list2)) print(next(list2)) print(next(list2)) print(next(list2))

ranges = iter(range(1, 10)) print(ranges) print(next(ranges)) print(next(ranges)) print(next(ranges))` 运行结果:

代码语言:javascript
复制
<dict_keyiterator object at 0x00523870>
1
2
<dict_valueiterator object at 0x005238A0>
3
4
<list_iterator object at 0x00405B30>
1
2
3
4
<range_iterator object at 0x004F3A10>
1
2
3

2、读取迭代器: #for遍历

代码语言:javascript
复制
    list= [1, 2, 3, 4, 5]
    for i in iter(list):
        print(i)

next()遍历:

代码语言:javascript
复制
 while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

二、生成器 使用了yield的函数称为生成器(generater).对于非常巨大的数了列表非常有用,一次读取一个元素,节省内存资源。 生成器用于不知道会生成多大数据的场景,每生成一个数据返回一次 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是迭代器。

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

下面代码正常是死循环,但是使用yield以后,只在用next()方法,才会运行一次。

代码语言:javascript
复制
def gena(i=2):
    while True:
        i = i * 2 - 1
        yield i

运行:

代码语言:javascript
复制
l = gena(2)
print(l)
print(next(l))
print(next(l))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档