荐 【流畅的python】笔记(C14可迭代的对象、迭代器和生成器)自测知识点和书籍补充
文章目录
C14 可迭代的对象、迭代器和生成器
14.1 Sentence类第1版: 单词序列
ps: repr格式化的赋值利器,针对于长的字符格式化。
默认情况下, reprlib.repr 函数生成的字符串最多有 30 个字符。
自测
1.如何检查对象是否可迭代?
答案
1.
14.4 Sentence类第3版: 生成器函数
PS: 正则group提取匹配字符
如图可以观察到group到底做了什么
自测
1.除了用异常捕获拿到以下函数的所有值,还可以选择什么方法?
答案
1.
for循环,这是一种常见的懒惰写法
14.5 Sentence类第4版: 惰性实现
自测
1.re.findall 函数的惰性版本?
答案
14.6 Sentence类第5版: 生成器表达式
自测
1.如下写法用生成器实现它的简化?
答案
1.
14.8 另一个示例: 等差数列生成器
自测
1.itertools.count(1, .5)会产生什么?
2. 使用itertools.takewhile 函数产生如下等差列表
答案
1.
2.
14.9 标准库中的生成器函数
总结
原谅我,这一小节作者写得太出色了,以致于我只能贴他的图。大家这一节一定要看完!这一节的所有知识点我都搬运过来了。
有没有觉得使用accumulate比一般基础教程中教你如果用高阶函数做阶乘要强大多了。
有人以为repeat,可以用[5]*20之类的来创建列表,但当你的代码所需要的长度暂时不可知时,这会是一种更好的方式。
14.10 Python 3.3中新出现的句法: yield from
自测
1.如果生成器函数需要产出另一个生成器生成的值,你会怎么写?
答案
1.
14.11 可迭代的归约函数
自测
1.all(),any()是短路吗,面对空列表会返回什么?
答案
1.
是。all返回True,any返回False。这需要注意,因为与一般的判断是反的。
14.12 深入分析iter函数
自测
1.iter函数第二个参数作用?
答案
1.
第二个值是哨符,这是个标记值,当可调用的对象返回这个值时,触发迭代器抛出 StopIteration 异常,而不产出哨符。
这样大家就不用写繁琐的if判断和break终止了,离简化代码又更近了一步~~
本文地址:https://blog.csdn.net/ngadminq/article/details/107293038
上一篇: C++语言程序——简单排序
下一篇: 正则表达式惰性匹配模式(?)