python中的高级特性

一. 迭代

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


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

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

二. 列表生成式

1. for循环

2. 列表生成式

eg1:

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

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

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


eg2:


三. 生成器

1. 为什么需要生成器?

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

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

2. 生成器是什么?

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

3. 怎么创建生成器?

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


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


4. 怎么调用生成器?

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

2>使用 for 循环


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


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


注:

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

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

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

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

3>生成器的send方法

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

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

c. 遇到下一个yield停止


eg:消费者—生产者模型


测试:

拓展:简易机器人


测试:




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值