在线客服
扫描二维码
下载博学谷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课程学习之前一定要试学一下这个课程。那哪里有比较优质的Python试学视频课程呢?
8721
2019-08-08 10:23:35
《编程小白的第一本Python入门书》读书笔记
对于编程零基础初学者来讲,Python入门选择看什么样的书是很重要的。第一本Pthon入门书的内容要精简,不然新手学了很久,都还在死磕基础知识。书的难度也不能太高,不然缺乏基础的学习者会看不懂,从而失去学习兴趣。因此在这里,小编要向大家推荐,一本最适合零基础学习者的书——《编程小白的第一本Pthon入门书》。
8645
2019-08-23 18:26:39
学习Python基础知识难不难?零基础可以学吗?
学习Python基础知识难不难?零基础可以学吗?Python是公认的新手友好语言,如果零基础的小伙伴想学习编程语言,那么Python绝对是最好的选择。至于学习难度,就需要看个人的学习能力了。对于零基础的学习者来说,最重要的就是有一个合理的学习规划和资深老师的引导。本文将给大家介绍博学谷的零基础Python课程,即使是零基础也可以轻松入门Python。
8032
2019-10-29 15:01:04
为什么Python编程语言应用如此广泛?
很多人都知道Python是一门简单易学、应用广泛的编程语言。但是大家是否真的明白为什么它能够简单易学?为什么能够应用广泛吗?同为编程语言,为什么Python更适合实现自动化运维?为什么Python能够实现科学计算?为什么Python是人工智能的首选语言?带着这些疑问,小编为大家揭秘Python为什么应用如此广泛?
7813
2019-11-12 17:27:00
Python基础语法学习之变量与赋值
近几年Python飞速发展,开始学习Python的人群不在仅仅局限于编程开发者,许多其他行业的从业者也开始将Python作为自己的职业技能。本文仍然是针对零基础的初学者,继续学习Python的基础语法——变量与赋值。主要内容包括变量和赋值的概念、代码演示、变量的特点和命名规范以及=符号。
6854
2020-04-16 10:53:42
