os.walk

这个函数在遍历目录树的过程中产出文件名,因此递归搜索文件系统像for 循环那样简单。

用于过滤的生成器函数

模块  函数  说明
itertools 

compress(it,
selector_it)

并行处理两个可迭代的对象;如果 selector_it
中的元素是真值,产出 it 中对应的元素
itertools 

dropwhile(predicate,
it)

处理 it,跳过 predicate 的计算结果为真值的元
素,然后产出剩下的各个元素(不再进一步检
查)

  filter(predicate, it)

把 it 中的各个元素传给 predicate,如果
predicate(item) 返回真值,那么产出对应的元
素;如果 predicate 是 None,那么只产出真值元

itertools 

filterfalse(predicate,
it)

与 filter 函数的作用类似,不过 predicate 的
逻辑是相反的:predicate 返回假值时产出对应
的元素

itertools

islice(it, stop) 或
islice(it, start,
stop, step=1)

产出 it 的切片,作用类似于 s[:stop] 或
s[start:stop:step],不过 it 可以是任何可迭代
的对象,而且这个函数实现的是惰性操作

itertools

takewhile(predicate,
it)

predicate 返回真值时产出对应的元素,然后立
即停止,不再继续检查

表14-2:用于映射的生成器函数

模块 函数  说明
itertools

accumulate(it,
[func])

产出累积的总和;如果提供了 func,那么把前两个
元素传给它,然后把计算结果和下一个元素传给
它,以此类推,最后产出结果

 

enumerate(iterable,
start=0)

产出由两个元素组成的元组,结构是 (index,
item),其中 index 从 start 开始计数,item 则从
iterable 中获取

 

map(func, it1,
[it2, ..., itN])

把 it 中的各个元素传给func,产出结果;如果传入
N 个可迭代的对象,那么 func 必须能接受 N 个参
数,而且要并行处理各个可迭代的对象

itertools starmap(func, it)

把 it 中的各个元素传给 func,产出结果;输入的
可迭代对象应该产出可迭代的元素 iit,然后以
func(*iit) 这种形式调用 func

表14-3:合并多个可迭代对象的生成器函数

 模块 函数    说明
 itertools  chain(it1, ..., itN)

先产出 it1 中的所有元素,然后产出 it2 中的
所有元素,以此类推,无缝连接在一起

 itertools   chain.from_iterable(it)

产出 it 生成的各个可迭代对象中的元素,一个
接一个,无缝连接在一起;it 应该产出可迭代
的元素,例如可迭代的对象列表

 itertools

product(it1, ..., itN,
repeat=1)

计算笛卡儿积:从输入的各个可迭代对象中获
取元素,合并成由 N 个元素组成的元组,与嵌
套的 for 循环效果一样;repeat 指明重复处理
多少次输入的可迭代对象

   zip(it1, ..., itN)

并行从输入的各个可迭代对象中获取元素,产
出由 N 个元素组成的元组,只要有一个可迭代
的对象到头了,就默默地停止

itertools

zip_longest(it1, ...,
itN, fillvalue=None)

并行从输入的各个可迭代对象中获取元素,产
出由 N 个元素组成的元组,等到最长的可迭代
对象到头后才停止,空缺的值使用 fillvalue
填充

表14-4:把输入的各个元素扩展成多个输出元素的生成器函数

模块 函数   说明
itertools combinations(it, out_len)

把 it 产出的 out_len 个元素组合在
一起,然后产出

itertools

combinations_with_replacement(it,
out_len)

把 it 产出的 out_len 个元素组合在
一起,然后产出,包含相同元素的
组合

itertools  count(start=0, step=1)

从 start 开始不断产出数字,按
step 指定的步幅增加

itertools  cycle(it)

从 it 中产出各个元素,存储各个元
素的副本,然后按顺序重复不断地
产出各个元素

itertools permutations(it, out_len=None)

把 out_len 个 it 产出的元素排列在
一起,然后产出这些排列;out_len的默认值等于 len(list(it))

itertools repeat(item, [times])

重复不断地产出指定的元素,除非
提供 times,指定次数

表14-5:用于重新排列元素的生成器函数

模块 函数 说明
itertools groupby(it,key=None)

产出由两个元素组成的元素,形式为 (key,
group),其中 key 是分组标准,group 是生成器,
用于产出分组里的元素

  reversed(seq)

从后向前,倒序产出 seq 中的元素;seq 必须是序
列,或者是实现了 __reversed__ 特殊方法的对象

itertools tee(it, n=2)

产出一个由 n 个生成器组成的元组,每个生成器
用于单独产出输入的可迭代对象中的元素

python 生成器(四):生成器基础(四)标准库中的生成器函数的更多相关文章

  1. Python标准库中的生成器函数

    一.用于过滤的生成器函数 - 从输入的可迭代对象中产出元素的子集,而不修改元素本身 import itertools l1 = [1,2,3,4,5] l2 = [True,False,True,Fa ...

  2. python协程(yield、asyncio标准库、gevent第三方)、异步的实现

    引言 同步:不同程序单元为了完成某个任务,在执行过程中需靠某种通信方式以协调一致,称这些程序单元是同步执行的. 例如购物系统中更新商品库存,需要用"行锁"作为通信信号,让不同的更新 ...

  3. python 3.x 爬虫基础---常用第三方库(requests,BeautifulSoup4,selenium,lxml )

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---常用第三方库 ...

  4. Python 标准库中的装饰器

    题目描述 1.简单举例 Python 标准库中的装饰器 2.说说你用过的 Python 标准库中的装饰器 1. 首先,我们比较熟悉,也是比较常用的 Python 标准库提供的装饰器有:property ...

  5. Python标准库:内置函数hasattr(object, name)

    Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...

  6. Python学习笔记011_模块_标准库_第三方库的安装

    容器 -> 数据的封装 函数 -> 语句的封装 类 -> 方法和属性的封装 模块 -> 模块就是程序 , 保存每个.py文件 # 创建了一个hello.py的文件,它的内容如下 ...

  7. (转)python标准库中socket模块详解

    python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...

  8. Python标准库-数字的处理函数(math模块)

    Python标准库-数字的处理函数(math模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. #!/usr/bin/env python #_*_conding:utf-8_* ...

  9. STL笔记(6)标准库:标准库中的排序算法

    STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew A ...

随机推荐

  1. 168.Excel列表名称

    Document 2020-03-16 Excel表列名称 1 -> A. 2 -> B: 26 -> Z 27 -> AA 28 -> AB 示例: 输入: s = & ...

  2. 解决Maven静态资源过滤问题

    在项目的pom.xml中添加下面的内容 <build> <resources> <resource> <directory>src/main/java& ...

  3. filebeat v6.3 多行合并的步骤 多个表达式同时匹配

    配置文件位于/etc/filebeat/filebeat.yml,就是filebeat的主配置文件打开文件filebeat.yml,搜索multiline:,默认是注释的,常用的有如下三个配置: mu ...

  4. [51nod1577]异或凑数

    题目   点这里看题目. 分析   以下设\(k=\lfloor\log_2(\max a)\rfloor\).   关于异或凑数的问题自然可以用线性基处理,即如果可以插入到线性基,就说明无法凑出这个 ...

  5. XAI/MLI 可解释机器学习系列1- 开源&paper汇总

    一直在关注可解释机器学习领域,因为确实在工作中有许多应用 模型检查,特征重要性是否符合预期和AUC一样重要 模型解释,比起虚无缥缈的模型指标,解释模型学到的规律更能说服业务方 样本解释,为什么这些用户 ...

  6. mysql内连接

    inner join(等值连接) 只返回两个表中联结字段相等的行 select * from role_action ra INNER JOIN action a on ra.action_id = ...

  7. 说说硬件中核心板的作用和优缺点,基于i.MX8M Mini核心处理器平台

    核心板,顾名思义,即硬件构成中关键的器件和电路打包封装的一块电子主板,具有布线复杂.多层.高频信号干扰.器件密度高等特性,大多数核心板集成了处理器.内存.存储器.电源管理和引脚,通过引脚与配套基板连接 ...

  8. 【Azure SQL】数据库性能分析

    前置条件 用户有查询数据统计权限 GRANT VIEW DATABASE STATE TO database_user; CPU性能问题 正在发生 查看前X个CPU消耗查询 (汇总) SELECT T ...

  9. JavaScript中的事件委托(转至大佬)

    转至:https://www.cnblogs.com/liugang-vip/p/5616484.html 起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没 ...

  10. C#中的闭包和意想不到的坑

    虽然闭包主要是函数式编程的玩意儿,而C#的最主要特征是面向对象,但是利用委托或lambda表达式,C#也可以写出具有函数式编程风味的代码.同样的,使用委托或者lambda表达式,也可以在C#中使用闭包 ...