import itertoolsimport operatornums = [1, 2, 3, 4, 5]print(list(itertools.accumulate(nums, operator.mul)))# [1, 2, 6, 24, 120]
如果我们不想使用operator.mul,上述程序可以改写如下:
import itertoolsnums = [1, 2, 3, 4, 5]print(list(itertools.accumulate(nums, lambda a, b: a * b)))# [1, 2, 6, 24, 120]
7、itertools.repeat(), itertools.cycle(), itertools.count(): 生成无限迭代对象在某些情况下,我们需要获得无限迭代 。有 3 个有用的功能:
(1) itertools.repeat():重复生成相同的项
例如,我们可以得到三个相同的“Yang”,如下所示:
import itertoolsprint(list(itertools.repeat('Yang', 3)))# ['Yang', 'Yang', 'Yang']
(2) itertools.cycle(): 通过循环获得无限迭代器
itertools.cycle函数将不会停止,直到我们跳出循环:
import itertoolscount = 0for c in itertools.cycle('Yang'):if count >= 12:breakelse:print(c, end=',')count += 1# Y,a,n,g,Y,a,n,g,Y,a,n,g,
itertools.count(): 生成一个无限的数字序列 如果我们只需要数字,可以使用itertools.count函数:
import itertoolsfor i in itertools.count(0, 2):if i == 20:breakelse:print(i, end=" ")# 0 2 4 6 8 10 12 14 16 18
如上所示,它的第一个参数是起始数字,第二个参数是步长 。
8、itertools.pairwise(): 轻松获取成对的元组自从Python 3.10版本开始,itertools模块新增了一个名为pairwise的函数 。它是一个简洁而方便的工具,用于从可迭代对象中生成连续的重叠对 。
import itertoolsletters = ['a', 'b', 'c', 'd', 'e']result = itertools.pairwise(letters)print(list(result))# [('a', 'b'), ('b', 'c'), ('c', 'd'), ('d', 'e')]
文章插图
9、itertools.takewhile(): 以不同的方式过滤元素itertools.takewhile()返回一个迭代器,只要给定的谓词函数评估为True,就会从可迭代对象中生成元素 。
import itertoolsnums = [1, 61, 7, 9, 2077]print(list(itertools.takewhile(lambda x: x < 100, nums)))# [1, 61, 7, 9]
该函数与内置的filter()函数不同 。filter函数将遍历整个列表:
nums = [1, 61, 7, 9, 2077]print(list(filter(lambda x: x < 10, nums)))# [1, 7, 9]
然而,itertools.takewhile函数如其名称所示,当评估函数为False时会停止迭代:import itertoolsnums = [1, 61, 7, 9, 2077]print(list(itertools.takewhile(lambda x: x < 10, nums)))# [1]
10、itertools.dropwhile(): itertools.takewhile的反向操作这个函数似乎是前面那个函数的相反思路 。itertools.takewhile()函数在谓词函数为True时返回可迭代对象的元素,而itertools.dropwhile()函数在谓词函数为True时丢弃可迭代对象的元素,然后返回剩下的元素 。
import itertoolsnums = [1, 61, 7, 9, 2077]print(list(itertools.dropwhile(lambda x: x < 100, nums)))# [2077]
推荐阅读
- 谷歌开源云端病理学 Python 资料库,加速医疗 AI 场景研发
- 200 行 Python 代码实现一个极简 GPT
- 你必须知道的常用的足够简练的 11 个 Python代码
- 你应该知道的18个Python函数
- 如何使用Python中的OCR技术将图像中的文本提取为可编辑文件?
- 全面了解Python PyQt6中应用程序类和窗口类之间的关系
- 十个简单的家庭锻炼方法,让你健康不再难
- Mojo比Python快35000倍?这门新语言想搞个大新闻!
- Python脚本批量处理图片,缩放裁剪压缩到指定大小
- 十个Web 开发人员必须知道的 Javascript 函数