python基础:迭代器与生成器

迭代器只能向前访问,不能后退。字典,列表,元组,字符串,range都是可以迭代的对象。 Python技术文章2017-12-07 |程序圆 |python基础,迭代器,生成器,程序圆Python培训官网

一、迭代器

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

运行结果:

1

2

3

4

1

2

3

4

1

2

3

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))

本文版权归程序圆人工智能+Python学院所有,欢迎转载,转载请注明程序圆出处。谢谢!
程序圆:程序圆人工智能+Python学院
首发:http://python.itcast.cn/
Python教程

Python移动端页面适配四大方式

2021-5-29 20:38:55

Python教程

人工智能+Python:爬虫开发必学的8个技巧

2021-5-30 2:38:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索