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. Sequence in the Pocket【思维+规律】

    Sequence in the Pocket 题目链接(点击) DreamGrid has just found an integer sequence  in his right pocket. A ...

  2. Redis底层结构全了解

    第一篇文章,思来想去,写一写Redis吧,最近在深入研究它. 一丶Redis底层结构 1. redis 存储结构 redis的存储结构从外层往内层依次是redisDb.dict.dictht.dict ...

  3. C Primer Plus(三)

    重读C Primer Plus ,查漏补缺 重读C Primer Plus,记录遗漏的.未掌握的.不清楚的知识点 文件输入/输出 1.fgets函数在读取文件内容时会将换行符读入,但gets不会,fp ...

  4. cb28a_c++_STL_算法_查找算法_(1)find_find_if

    cb28a_c++_STL_算法_查找算法_(1)find_find_iffind() //线性查找,比较慢.pos1 = find(ilist.begin(), ilist.end(), 5);fi ...

  5. ca74a_c++__文件流对象的使用-用来读写文件ifstream

    /*ca74a_c++__文件流对象的使用-用来读写文件将文件流对象绑定到文件上检查文件是否打开成功将文件流与新文件重新绑定清楚文件流的状态infile.close();//关闭流 infile.cl ...

  6. phpmyadmin系列渗透思路连载(一)

    当拿到phpmyadin的站点后,我一般会尝试一下几种攻击手法: 1.通过弱口令进入后台,尝试into outfile写入一句话 条件:(1)有写的权限    (2)知道web绝对路径    (3)w ...

  7. 解决Mac中anaconda作图中文异常显示的问题

    说明 本篇主要针对在MAC系统中Anaconda环境下,matplotlib显示不了中文的问题,提出解决Python绘图时中文显示的方法. 运行环境 macOS Mojave 10.14.6 Pyth ...

  8. 为页内的tab添加的iframe添加加载动画过渡效果

    var iframe = $("iframe[data-id=" + id + " ]"); if (iframe.length > 0) { var e ...

  9. AOP的概念

    1.1 什么是AOP? 软件开发一直在寻求更加高效.更易维护甚至更易扩展的方式.软件开发的目的,最终是为了解决各种需求,包括业务需求和系统需求.使用面向对象方法,我们可以对业务需求等普通关注点进行很好 ...

  10. 面试题64:求 1 + 2 + ... + n

    这道题目条件限制严格,需要发散思维...但是作者是以 C++ 语言特性来做讲解的,对于 Java 狗只能说稍微有点参考意义吧!