在线客服
扫描二维码
下载博学谷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编辑器推荐:Sublime Text、Sublime Text、Atom、PyCharm、Vim、clipse with PyDev、Emacs、Komodo Edit、Wing、PyScripter、The Eric Python IDE、Interactive Editor for Python等。
7138
2019-09-24 10:51:46
什么是Python语言?Python成为热门编程语言的原因
什么是Python语言?Python成为热门编程语言的原因,由于Python简单易学功能强大,可以适用于各种开发环境,一门语言可走遍打天下,比较适合初学者入门。
7534
2019-10-10 17:20:23
学了Python还有必要学C语言吗?
学了Python还有必要学C语言吗?对于程序员而言,仅仅会一门语言是不够的,当能力足够强就会发现自己欠缺技能越来越多,不能局限于本科学了C语言、C++、Python 等三个语言工具,了解程序设计中的两个类型设计思维:面向结构和面向对象编程就觉得学其他语言没用了。
10977
2019-10-24 16:48:11
0基础入门Python基础知识学什么?
0基础入门Python基础知识学什么?对于初学者来说,需要学习变量和类型 、数字和字符串以及常用的数据结构、字符编码、运算符 、分支结构、循环结构、函数与模块的使用、面向对象、文件的操作、进程与线程等内容。
3960
2020-08-24 16:32:17
Python编程好不好学?入门难吗?
Python简单易懂的语法使得学习的难度大大降低了,Python是交互式语言,可以在一个Python提示符直接互动执行写你的程序。Python面向对象语言支持面向对象的风格或代码封装在对象的编程技术。Python是初学者的语言,对初级程序员而言是一种非常友好的编程语言。
4103
2021-05-31 11:17:00