一. 迭代

1. 枚举:enumerate      #把一个 list 变成索引­元素对

python中的高级特性

2. 迭代        #通过collections模块的Iterable类型判断

python中的高级特性

注:可迭代便可使用for循环遍历,但生成器只能遍历一次

二. 列表生成式

1. for循环

2. 列表生成式

python中的高级特性

eg1:

- 生成100以内所有偶数的平方;

- 生成‘ABC’与‘123’的全排列;

- 列出当前目录下的所有文件和目录名;

python中的高级特性

eg2:

python中的高级特性

三. 生成器

1. 为什么需要生成器?

1>通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表容量肯定是有限的

2>如果创建一个包含 100 万个元素甚至更多的列表,占用很大的存储空间

2. 生成器是什么?

在 Python 中,一边循环一边计算的机制,称为生成器(Generator),当需要的时候调用next方法生成,可以节省大量的内存空间

3. 怎么创建生成器?

1>把列表生成式的 [] 改成 ()

python中的高级特性

2>通过函数实现生成式的功能        #yield关键字

python中的高级特性

4. 怎么调用生成器?

1>使用g.next()方法依次读取元素

2>使用 for 循环

python中的高级特性

eg1:斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:1, 1, 2, 3, 5, 8, 13, 21...

python中的高级特性

eg2:next方法与yield关键字的关系

python中的高级特性

注:

a. 函数顺序执行,遇return语句或最后一行函数语句就返回

b. 如果函数里面有yield关键字,那么调用这个函数的结果赋给的变量为生成器

c. 当生成器g调用第一个next方法时,会运行函数,直到遇到第一个yield停止

d. 当调用第二个next方法时,会从停止的地方继续执行,直到遇到下一个yield

3>生成器的send方法

a. 使用send方法给生成器函数发送数据

b. 使用send方法前,必须先调用一次next()方法

c. 遇到下一个yield停止

python中的高级特性

eg:消费者—生产者模型

python中的高级特性

测试:

python中的高级特性

拓展:简易机器人

python中的高级特性

测试:

python中的高级特性



相关文章:

  • 2021-07-29
  • 2021-07-18
  • 2022-02-09
  • 2021-05-21
猜你喜欢
  • 2022-02-17
  • 2021-11-01
  • 2021-06-02
  • 2021-05-22
  • 2021-12-01
  • 2022-01-19
  • 2021-08-17
相关资源
相似解决方案