时间:2021-05-22
本文实例讲述了Python学习笔记之迭代器和生成器用法。分享给大家供大家参考,具体如下:
迭代器和生成器
迭代器
生成器
下面是一个叫做 my_range 的生成器函数,它会生成一个从 0 到 (x - 1) 的数字流:
def my_range(x): i = 0 while i < x: yield i i += 1该函数使用了 yield 而不是关键字 return。这样使函数能够一次返回一个值,并且每次被调用时都从停下的位置继续。关键字 yield 是将生成器与普通函数区分开来的依据。
因为上述代码会返回一个迭代器,因此我们可以将其转换为列表或用 for 循环遍历它,以查看其内容。例如,下面的代码:
for x in my_range(5): print(x)输出如下:
0
1
2
3
4
为何要使用生成器?
迭代器和生成器[相关练习]
请自己写一个效果和内置函数 enumerate 一样的生成器函数。如下所示地调用该函数:
lessons = ["Why Python Programming", "Data Types and Operators", "Control Flow", "Functions", "Scripting"]for i, lesson in my_enumerate(lessons, 1): print("Lesson {}: {}".format(i, lesson))应该会输出:
Lesson 1: Why Python Programming
Lesson 2: Data Types and Operators
Lesson 3: Control Flow
Lesson 4: Functions
Lesson 5: Scripting
解决方案:
lessons = ["Why Python Programming", "Data Types and Operators", "Control Flow", "Functions", "Scripting"]def my_enumerate(iterable, start=0): # Implement your generator function here i = start for element in iterable: yield i, element i += 1for i, lesson in my_enumerate(lessons, 1): print("Lesson {}: {}".format(i, lesson))如果可迭代对象太大,无法完整地存储在内存中(例如处理大型文件时),每次能够使用一部分很有用。实现一个生成器函数 chunker,接受一个可迭代对象并每次生成指定大小的部分数据。如下所示地调用该函数:
for chunk in chunker(range(25), 4): print(list(chunk))应该会输出:
[0, 1, 2, 3]
[4, 5, 6, 7]
[8, 9, 10, 11]
[12, 13, 14, 15]
[16, 17, 18, 19]
[20, 21, 22, 23]
[24]
解决方案:
def chunker(iterable, size): for i in range(0, len(iterable), size): yield iterable[i:i + size]for chunk in chunker(range(25), 4): print(list(chunk))学习参考:
https:///questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks
更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了python生成器用法。分享给大家供大家参考,具体如下:1.生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进
本文实例讲述了PHP5.5迭代生成器用法。分享给大家供大家参考,具体如下:PHP5.5引入了迭代生成器的概念,迭代的概念早就在PHP有了,但是迭代生成器是PHP
Python中迭代器与生成器实例详解本文通过针对不同应用场景及其解决方案的方式,总结了Python中迭代器与生成器的一些相关知识,具体如下:1.手动遍历迭代器应
本文实例讲述了PHP迭代器和生成器用法。分享给大家供大家参考,具体如下:迭代器迭代器实际是一个实现了Iterator的类,可以用foreach进行遍历。例如:i
前言生成器generator生成器的本质是一个迭代器(iterator)要理解生成器,就要在理解一下迭代,可迭代对象,迭代器,这三个概念Python生成器gen