在线客服
扫描二维码
下载博学谷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在线培训班那个好?
11935
2019-08-08 11:56:39
Python框架有哪些?区别是什么?
众所周知,Python开发框架大大减少了开发者不必要的重复劳动,提高了项目开发效率的同时,还使得创建的程序更加稳定。目前比较主流的Python框架都有哪些呢?一般大家用的比较多的是Django、Flask、Scrapy、Diesel、Cubes、Pulsar和Tornado。那么这些Python框架的区别是什么呢?下面我们一起来看看这些Python框架的不同适用环境。
8027
2020-04-10 17:00:06
有哪些必备的Python基础知识
提到Python,应该很少有人没听过这个词,它的知名度已经表明了它的重要性。Python不仅仅是计算机从业者需要掌握的技能,它还可以运用到许多领域中,帮助人们快速解决工作中的问题,提高工作效率。
7877
2020-05-11 09:34:09
Python程序编写技巧 提升工作效率
Python程序编写技巧提升工作效率,在学习和工作过程中掌握一些小技巧可以大大提高工作的效率,接下来小编将介绍编程惯用法、基础用法、库的使用、内部机制、使用工具辅助项目开发、性能剖析与优化等方面的编程技巧。
6284
2020-06-29 14:23:44
Python定时任务框架APScheduler基础知识分享
APScheduler十分方便,课基于日期、固定时间间隔以及crontab类型任务在主程序的运行过程中快速增加新作业或删除旧作业,若把作业存储在数据库中作业的状态会被保存,当调度器重启时不必重新添加作业,作业会恢复原状态继续执行。
7290
2021-03-23 15:30:34
