python 标准库中的生成器函数

Python——标准库函数 Python标准库函数相关知识 阅读详情

标准库提供了很多生成器,有用于逐行迭代纯文本文件的对象,还有出色的 os.walk 函数。这个函数在遍历目录树的过程中产出文件名,因此递归搜索文件系统像 for 循环那样简单。

os.walk 生成器函数的作用令人赞叹,不过本节专注于通用的函数:参数为任意的可迭代对象,返回值是生成器,产出选中的,计算出的或重新排列的项。在下述几个表格中,我会概述其中的 24个,有些是内置的,有些在 itertools 和 functools 模块中。为了方便,我按照函数的高阶功能分组,而不管函数是在哪里定义的。

1. 第一组是用于筛选的生成器函数:从输入的可迭代对象中产出元素的子集,而且不修改元素本身,之前的itertools.takewhile 函数。与 takewhile 函数一样,表 14-1 中的大多数函数都接受一个断言参数(predicate)。这个参数是个布尔函数,有一个参数,会应用到输入中的每个元素上,用于判断元素是否包含在输出中。

在这里插入图片描述
例子:
在这里插入图片描述

**2.**下一组是用于映射的生成器函数:在输入的可迭代对象(map 和 starmap 函数处理多个可迭代的对象)中的各个元素上做计算,然后返回结果。下表中的生成器函数会 输入的可迭代对象中的各个元素中产出一个元素。如果输入来自多个可迭代的对象,第一个可迭代的对象到头后就停止输出。
在这里插入图片描述
例子:
在这里插入图片描述
**3.**接下来这一组是用于合并的生成器函数,这些函数都从输入的多个可迭代对象中产出元素。chain 和 chain.from_iterable 按顺序(一个接一个)处理输入的可迭代对象,而 product、zip 和 zip_longest 并行处理输入的各个可迭代对象。在这里插入图片描述
例子:
在这里插入图片描述
在这里插入图片描述
4.有些生成器函数会从一个元素中产出多个值,扩展输入的可迭代对象,如下图:
在这里插入图片描述
itertools 模块中的 count 和 repeat 函数返回的生成器“无中生有”:这两个函数都不接 受可迭代的对象作为输入。cycle 生成器会备份输入 的可迭代对象,然后重复产出对象中的元素。
例子:
在这里插入图片描述
在 itertools 模块的文档中(https://docs.python.org/3/library/itertools.html), combinations、 combinations_with_replacement 和 permutations 生成器函数,连同 product 函数,称为组合 学生成器(combinatoric generator)。 itertools.product 函数和其余的
组合学
函数有紧密的 联系
在这里插入图片描述

**5.**最后一组生成器函数用于产出输入的可迭代对象中的全部元素,不过会以某种方式重新排列。其中有两个函数会返回多个生成器,分别是itertools.groupby 和 itertools.tee。这一组里的另一个生成器函数,内置的 reversed 函数,是本节所述的函 数中唯一一个不接受可迭代的对象,而只接受序列为参数的函数。这在情理之中,因为 reversed 函数从后向前产出元素,而只有序列的长度已知时才能工作。不过,这个函数会按需产出各个元素,因此无需创建反转的副本。我把 itertools.product 函数划分为用于合并的生成器,因为那一组函数都处理多个可迭代的对象,下表中的生成器最多只能接受一个可迭代的对象。

在这里插入图片描述
itertools.groupby 函数和内置的 reversed 函数的用法。注意,itertools. groupby 假定输入的可迭代对象要使用分组标准排序;即使不排序,至少也要使用指定的 标准分组各个元素。
在这里插入图片描述
这一组里的最后一个生成器函数是 iterator.tee,这个函数只有一个作用:从输入的一个 可迭代对象中产出多个生成器,每个生成器都可以产出输入的各个元素。产出的生成器可 以单独使用。
在这里插入图片描述
注意:
这一节的示例多次把不同的生成器函数组合在一起使用。这是这些函数的优秀特 性:这些函数的参数都是生成器,而返回的结果也是生成器,因此能以很多不同的方式结 合在一起使用。

Python标准库中文版 python标准库,介绍了python标准库。本书是超过 3,000 个新闻组讨论的精华部分, 当然也有很多的新脚本, 涵盖标准库的每个角落. 立即下载

相关推荐

python标准库

Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数

「强烈收藏」Python第三方库资源大全,1000+工具包

「强烈收藏」Python第三方库资源大全,1000+工具包

xiqng17111342931的博客 3万+

深入解析MTK DRM初始化流程:从KMS模块到组件框架

本文深入解析了联发科(MTK)平台上DRM显示框架的初始化流程。从内核模块加载、Component框架管理依赖,到核心的mtk_drm_bind函数构建KMS对象(CRTC、Plane、Encoder、Connector),最终完成DRM设备注册并创建用户空间接口。文章结合调试经验,为开发者梳理了从驱动启动到屏幕点亮的完整路径与关键排查点。

onion的博客 765

python3_标准库___itertools模块(创建和使用迭代器)

itertools模块是用于创建和使用迭代器的功能工具。 1.无限迭代器(infinite iterators) # coding:utf-8 # python Interpreter: 3.6.5 # author: admain_maxin from itertools import * # 1.class count(object): # count(start=0, step=1...

也许有一天我们再相逢 睁开眼睛看清楚 我才是英雄! 707

AD9361功能介绍和使用

AD9361使用分数分频锁相环(PLL)来产生发射机和接收机本地振荡器(LO)频率和BB PLL。BB PLL 可用于数据转换、数字滤波器和 |/O 端口。PLL的参考时钟可以由外部振荡器或外部晶体(XO)和数字可编程片内可变电容提供,电容微调产生参考时钟频率,XO和微调电容的组合统称为DCXO。有多个天线输入的分集系统。接收链数据首先经过低噪声放大器(LNA),然后是同相(1)和正交(Q)放大器,混频器和频带整形滤波器,可将接收到的信号下变频为基带以进行数字化。时分双工(TDD)和频分双工(FDD)。。。

wangjie36的博客 1万+

TEA-Tiny Encryption算法在FPGA的实现

在FPGA原型中,我们定义了一个TEA_FPGA模块,该模块包含一个输入数据端口(plain)、一个输入密钥端口(key)和一个输出数据端口(cipher)。在模块中,我们通过32轮的循环处理来实现TEA算法的加密过程,并将最终结果存储在cipher变量中。由于FPGA硬件的高速性能,这种基于HDL的TEA算法实现可以在短时间内完成大量的数据加密处理,从而提高加密效率和性能。总之,在FPGA中实现TEA算法可以大大提高加密效率和性能,通过使用硬件描述语言HDL来实现可以更高效、更快速地完成数据加密操作。

BitSlinger的博客 272

列出三个python标准库_罗列 Python 标准库中的生成器函数 (3)

上一篇 ( 罗列 Python 标准库中的生成器函数 (2) ) 我们列举了 用于合并多个可迭代对象的生成器函数 ,接下来我们继续列举标准库中剩下的生成器函数有些生成器函数会从一个元素中产出多个值,扩展输入的可迭代对象,如下所示。4、把输入的各个元素扩展成多个输出元素的生成器函数模块函数说明itertoolscombinations(it, out_len)把 it 产出的 out_len 个元素...

weixin_30752653的博客 207

【GlobalMapper精品教程】070:专题地图制作完整操作教程

与其它GIS软件一样,Globalmapper也可以制作出漂亮的地图,本文讲解专题地图制作完整操作流程。

智慧空间实验室 3750

Python 可迭代的对象、迭代器 和生成器(标准库中的生成器函数)

(https://docs.python.org/3/library/itertools.html),combinations、combinations_和 permutations 生成器函数,连同 product 函数,称为组合学生成。色的 os.walk 函数(https://docs.python.org/3/library/os.html#os.walk)。示例 14-21 演示 itertools.groupby 函数和内置的 reversed 函数的。后重复产出对象中的元素。

钢铁男儿 814

使用Simulink进行基于IIR滤波器的设计与稳定性分析仿真

IIR滤波器的稳定性与其系统函数的极点位置密切相关。如果所有极点都位于Z平面的单位圆内,则该滤波器是稳定的;否则,滤波器将是不稳定的。在设计IIR滤波器时,确保其稳定性对于避免输出信号发散至关重要。明确你的系统需求,比如输入信号类型(如正弦波)、采样率、IIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通IIR滤波器,用来去除高于500Hz的所有频率成分,保留低于500Hz的信号成分。采样率为8kHz。

xiaoheshang_123的博客 150

29、固态变压器拓扑、设计及其应用深度解析

本文深入解析了固态变压器(SST)的拓扑结构、设计方法及其在智能电网和能源互联网中的应用。重点探讨了机器学习在SST优化设计中的应用,包括中高频变压器设计、整体系统优化与建模研究。文章详细介绍了多端口SST的拓扑特点、功率传输机制及其作为能源路由器的关键作用,分析了不同端口数量下的控制复杂度与应用场景,并通过案例研究展示了四端口SST在分布式能源系统中的实际应用。最后,文章总结了多端口SST面临的技术挑战,并展望了未来在先进控制策略、集成化设计和标准化方面的发展方向。

study的专栏 3791

Python标准库中的生成器函数

一、用于过滤的生成器函数   - 从输入的可迭代对象中产出元素的子集,而不修改元素本身 import itertools l1 = [1,2,3,4,5] l2 = [True,False,True,False,True] def predict(k): return l2[k-1] # compress(it,selector_it)并行处理两个可迭...

weixin_30374009的博客 96

yolov5-6.0的稀疏化训练、结构化剪枝、微调

YOLOv5的BN剪枝、微调

qq_41920323的博客 4394

python生成器函数_罗列 Python 标准库中的生成器函数 (1)

实际编码中,我们可能会碰到这样的需求,实现一个生成器函数,但是实现之前要知道标准库中有什么可用, 否则很可能会重新发明轮子,举个栗子~实现一个无穷等差数列,首项 start = 0, 公差 step = 2, 很显然你不能用列表的形式实现,不然肯定会内存溢出,你可以直接写一个生成器,但是,为什么不用内置的呢import itertoolsgen = itertools.count(start, s...

weixin_39569894的博客 135

科研绘图系列:基因突变瀑布图统计以及可视化

科研绘图系列:基因突变瀑布图统计以及可视化

专注生信领域 1653

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

python标准库中的24个生成器函数,个个都超级厉害,你用过几个?

前言 标准库提供了很多生成器,有些是内置的,有些在itertools和functools模块中,下面我们就按照它们的功能进行分组来看看它们吧! 用于过滤的生成器函数 import itertools # itertools.compress(it,selector_it) # 并行处理两个可迭代对象,如果selector_it中的元素是真值,产出it中对应的元素 print([i for i in itertools.compress(range(10), [0, 0, 1, 1])]) #

max_LLL的博客 1082

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python标准库中的生成器函数大全(非常详细)

用于筛选的生成器函数:从输入的可迭代对象中产生项的子集,而且不修改项本身。多数可筛选生成器接收一个predicate参数。这个参数的值是个布尔函数,接收一个参数,应用到输入中的每一项上,用于判断项是否包含在输出中。

qq_44972955的博客 1287

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python 生成器:不是所有能遍历的对象都是生成器

生成器是一种特殊的函数,它通过 yield 返回值,并能在多次调用之间保持状态。生成器函数:包含yield的函数;生成器表达式:类似列表推导式,但使用()而非[]。# 生成器函数yield 1yield 2yield 3# 生成器表达式📌 这两个才是真正的“生成器对象”。生成器函数必须包含yield,且调用后返回的是一个生成器对象。在 Python 标准库中,真正用生成器实现的函数不多,但功能强大,如os.walk()和。

之之为知知 681

第14章:扩展-标准库中的生成器函数

标准库提供了很多生成器,有用于逐行迭代纯文本文件的对象,还有出色的 os.walk 函数。 这个函数在遍历目录树的过程中产出文件名,因此递归搜索文件系统像 for 循环那样简单。 os.walk 生成器函数的作用令人赞叹,不过本节专注于通用的函数:参数为任意的可迭代对象,返回值是生成器,用于生成选中的、计算出的 和重新排列的元素。 表14-1 用于过滤的生成器函数:从输入的可迭代对象中产出元素的子集,而且不修改元素本身。 filter(predicate, it):把 it 中的各个元素传给 pred

waitan2018的博客 241

用python实现分段函数_python分段函数

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!segmentation fault (core dumped) python脚本: #! usrbinenv python import ctypesimport osimport sys # linux machine codebuf +=xbdxfcxa1x5dx63xd9xe...

weixin_39630466的博客 6136

《Fluent Python》笔记 | 迭代器和生成器

【Fluent Python】笔记 | 迭代器和生成器

MSTIFIY的博客 395

python中迭代是什么意思_Python中的“迭代”详解

迭代器模式:一种惰性获取数据项的方式,即按需一次获取一个数据项。关于迭代器和生成器的区别:在Python社区中,大多数时候把迭代器和生成器视为同一概念。如果需要细分的话,那么迭代器用于从集合中取出数据,而生成器用于凭空生成元素。一、序列所有序列都是可以迭代的。我们接下来要实现一个 Sentence(句子)类,我们向这个类的构造方法传入包含一些文本的字符串,然后可以逐个单词迭代。sentence.p...

weixin_39611725的博客 1155

迭代器与生成器

文章目录前言可迭代对象可迭代对象与迭代器的对比生成器函数标准库中的生成器函数深入分析iter函数 前言 文章是《流畅的Python》学习笔记与个人总结。 可迭代对象 序列可以迭代的原因:iter函数 iter函数的作用: 检查对象是否实现了 iter 方法,如果实现了就调用它,获取一个迭代器。 如果没有实现 iter 方法,但是实现了 getitem 方法, Python 会创建一个迭代器,尝试按顺序(从索引 0 开始)获取元素。 如果尝试失败, Python 抛出 TypeError 异常,通常会提示“

奔跑的蜗牛的博客 406
上一篇: python 可迭代的归约函数
下一篇: python 代码调试
MZP_man
博客等级 码龄8年 188粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值