在线客服
扫描二维码
下载博学谷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列表的学习笔记吧!
5352
2019-12-24 15:17:42
Python应用方向有哪些?
Python应用方向:Python支持函数式编程和 OOP的面向对象编程,开放源码云计算,以海量数据为基础,结合科学计算、机器学习等技术,对数据进行清洗、去重、规范化和有针对性的分析,人工智能领域Python是机器学习、神经网络、深度学习。
5723
2020-07-02 14:59:58
如何用Python导出测试数据?
如何用Python导出测试数据?在给领导汇报测试结果时,是不可能用代码进行演示的,所以需要将结果数据导出并将进行图表化。本文将详细的讲解如何把测试结果数据单纯地导出到 Excel 中。如果你感兴趣就一起来看看吧~
6719
2020-08-03 16:40:33
jQuery选择集转移怎么操作?如何写代码?
jQuery选择集转移怎么操作?如何写代码?选择集是通过$()方法获取到的所有标签的集合。选择集转移以选择的标签为参照获取转移后的标签。
3410
2022-01-04 16:17:09
JavaScript对象的创建方式有几种?怎么用?
JavaScript对象的创建方式有几种?怎么用?对象是JavaScript的基本数据类型,对象不仅是字符串到值的映射还保持自有属性,JavaScript对象可以从一个称为原型的对象继承属性,对象的方法通常是继承的属性。
3549
2022-01-07 15:35:08
