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. 用了一年 TIM 移动版之后,我又换回了手机 QQ

    TIM,是一个很玄学的产品. 讲真,我很不喜欢 QQ 电脑版.一个原因是我很讨厌一直占着右上角这一行为:右上角是给关闭按钮实现盲操用的,QQ 这么一个聊天软件没有这么高的地位:二是我不喜欢它的多窗口: ...

  2. Java 异常处理的十个建议

    前言 Java异常处理的十个建议,希望对大家有帮助~ 本文已上传github: https://github.com/whx123/JavaHome 公众号:捡田螺的小男孩 一.尽量不要使用e.pri ...

  3. fastjson对String、JSONObject、JSONArray相互转换

    String——>>>JSONArray String st = "[{name:Tim,age:25,sex:male},{name:Tom,age:28,sex:mal ...

  4. Vmware的各版本KEY

    算是之前收集到的备份一下在这里吧,顺便方便别人(ô‿ô) 应该是比较全的 VMware Workstation4.xx for WindowsZHDH1-UR90N-W844G-4PTN6G1NP0- ...

  5. Java二次复习笔记(1)

    Java二次复习笔记(1) Java采用的默认字符编码集是Unicode. byte=byte+byte报错,值为int,而byte+=byte不报错.同样short = short+short报错, ...

  6. 微信小程序入门基础

    微信小程序入门基础  视频教程(https://edu.csdn.net/course/detail/8456?pre_view=1) 第一章.认识小程序  1.工具的下载与安装  2.小程序代码构成 ...

  7. linux下的c语言编程学习笔记

    视频参看csdn学院王阳和下面的linux环境下c语言编程基础相当的经典,其中王阳的视频讲的很好,相当的经典 编译hellogcc.c需要依赖/home目录下的头文件 为了避免同一个文件被includ ...

  8. SpringMVC 学习笔记(三)数据的校验

    34. 尚硅谷_佟刚_SpringMVC_数据绑定流程分析.avi 例如:在jsp中输入一个String字符串类型,需要转换成Date类型的流程如下 convertservice对传入的数据进行转换 ...

  9. DNS区域传输和DNS字典爆破

    nslookup命令是已知域名的的解析记录下进行的查询.打个比方,已知sina.com这个域名有www.sina.com这条主机解析记录,就可以查询www.sina.com对应的ip以及其他相关信息. ...

  10. WPF中的Data Binding调试指南

    大家平时做WPF开发,相信用Visual studio的小伙伴比较多.XAML里面曾经在某些特殊版本的Visual Studio中是可以加断点进行调试的,不过目前多数版本都不支持在XAML加断点来调试 ...