继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python基础:迭代器与生成器

Cats萌萌
关注TA
已关注
手记 275
粉丝 50
获赞 304

一、迭代器

迭代器只能向前访问,不能后退
字典,列表,元组,字符串,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))`
运行结果:

<dict_keyiterator object at 0x00523870>12<dict_valueiterator object at 0x005238A0>34<list_iterator object at 0x00405B30>1234<range_iterator object at 0x004F3A10>123

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

    list= [1, 2, 3, 4, 5]    for i in iter(list):        print(i)

next()遍历:

 while True:    try:        print (next(it))    except StopIteration:        sys.exit()

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

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

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

def gena(i=2):    while True:        i = i * 2 - 1        yield i

运行:

l = gena(2)print(l)print(next(l))print(next(l))

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP