荐 【流畅的python】笔记(C14可迭代的对象、迭代器和生成器)自测知识点和书籍补充

2022-08-08,,,,

文章目录

  • C14 可迭代的对象、迭代器和生成器
    • 14.1 Sentence类第1版: 单词序列
        • ps: repr格式化的赋值利器,针对于长的字符格式化。
        • 自测
        • 答案
    • 14.4 Sentence类第3版: 生成器函数
        • PS: 正则group提取匹配字符
        • 自测
        • 答案
    • 14.5 Sentence类第4版: 惰性实现
        • 自测
        • 答案
    • 14.6 Sentence类第5版: 生成器表达式
        • 自测
        • 答案
    • 14.8 另一个示例: 等差数列生成器
        • 自测
        • 答案
    • 14.9 标准库中的生成器函数
        • 总结
    • 14.10 Python 3.3中新出现的句法: yield from
        • 自测
        • 答案
    • 14.11 可迭代的归约函数
        • 自测
        • 答案
    • 14.12 深入分析iter函数
        • 自测
        • 答案

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

《荐 【流畅的python】笔记(C14可迭代的对象、迭代器和生成器)自测知识点和书籍补充.doc》

下载本文的Word格式文档,以方便收藏与打印。