在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
怎么理解Python迭代器与生成器?在Python中,使用for ... in ... 可以对list、tuple、set和dict数据类型进行迭代,可以把所有数据都过滤出来。如下:

for element in [1, 2, 3]:
print(element)
for element in (1, 2, 3):
print(element)
for key in {'one':1, 'two':2}:
print(key)
for char in "123":
print(char)
for line in open("myfile.txt"):
print(line, end='')
1、迭代器
对字符串,列表,使用内置函数 iter 转化为可迭代对象, 使用next关键字,可迭代对象每次取其中的一个值。如下面代码:
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
输出
1
2
3
4
如果超出数据的长度,将会报错 StopIteration
nums = [1,2,3,4]
nums = iter(nums)
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums))
print(next(nums)) # 超过数据长度,报错 StopIteration
2、生成器
使用生成器可以创建迭代器。生成器主要使用 yeild 关键字,每次调用 next 时会与yeild 定义的对应。例如:我们需要取 10~20之间的数据,步长为2,可以使用如下code
for x in range(10,20,2):
print(x)
但是如果步长设置为 0.5,如下代码:
for x in range(10,20,0.5):
print(x)
将会报错
TypeError: 'float' object cannot be interpreted as an integer
这个时候,我们就可以使用 生成器来自定义一个函数
def drange(start,stop,step):
x = start
while x< stop:
yield x
x += step
for x in drange(10,20,0.5):
print(x)
再举一个例子:
给定一个字符串,倒叙排列:
def reverse(data):
for x in range(len(data)-1,-1,-1):
yield data[x]
for x in reverse('gold'):
print(x)
看到这里,相信大家对于理解Python迭代器与生成器已经有了一定的理解。关于更多的干货内容,尽在博学谷IT培训平台,从零基础到进阶提升各个学习阶段的学习内容都在等着你!
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
零基础能学Python开发吗?
Python作为自动化测试、自动化运维、人工智能以及数据分析最长用的语言,吸引了很大一部分同学加入到Python学习的行列中,其中不少同学会问“零基础能学Python开发吗?”实际这个问题是一个伪命题,任何一门技术都是从不会到会的一个过程。虽然有一定的基础的情况下学习某项技能肯定会更加容易,但是作为零基础的人如果可以找到适合的学习方法并且坚持学习也是完全可以掌握python开发这项技能的。
10030
2019-08-08 10:23:28
Python容器可以存储哪些类型数据?
Python容器可以存储哪些类型数据?一般可以储存四种数据类型,即list(列表)、tuple(元组)、set(集合)和dict(字典)。下面为大家详细介绍分析Python容器的存储数据类型,这些也是大家在学习Python编程基础所必须掌握的知识点,还不了解的小伙伴赶紧接着看下去吧!
12823
2019-10-23 16:17:39
Lambda函数的语法结构解析
说到Lambda函数的语法结构,我想问大家一个问题,什么是Lambda表达式?众所周知,Lambda表达式是一个匿名函数,简单来讲就是没有函数名的函数,它还可以表示闭包。Lambda函数的出现简化了代码,它的语法结构可以这样写:(variable)->action。下面将详细为大家解析Lambda函数的语法结构,感兴趣的朋友可以接着看下去。
8456
2020-01-14 14:35:43
Python基础学完了再学什么?
基础阶段学完Python 基础语法、python 容器、函数和文件操作、面向对象、 python编程和web基础、Linux 操作系统多任务编程、Python 网络编程、静态 web 服务器、HTML、CSS、JavaScript、数据库 MySQL、正则表达式、Python 进阶、mini-web 框架后,需要在进行实操积累项目实战经验。
5892
2021-04-08 16:18:17
Python通用装饰器的使用方法介绍
Python通用装饰器的使用方法介绍,Python通用装饰器带有参数的装饰器,通过学习通用装饰器的使用写出通用的装饰器,实现代码的运行。
5633
2021-12-03 17:22:53
