python_函数进阶3

一、生成器

1、自己用python代码写的迭代器,生成器的本质就是迭代器

2、def fun():

    print(111)
    yield 'aa'

    print(222)

y = fun()  #生成器函数的对象

print(y.__next__)   #111,aa  __next__取值

3、yield不会结束函数,一个next对应一个yield,yield将值返回给对象

4、生成器直接创建,不需要转化,从本质就节省内存

5、send  yield

  send与next一样,也是对生成器取值(执行一个yield方法)

  send可以给上一个yield传值

  第一次取值永远是next

  最后一个yield永远也得不到send传的值

二、列表推导式

1、循环模式

  l = [i for i in range(100)]

2、筛选模式

  l2 = [i for i in range(100) if i %2==0]

3、优点:一行解决,方便

   缺点:不易排错,不能超过三次循环

4、生成器表达式

  将列表推导式[]换成()即可

5、字典推导式

  dic = ['a':10,'b':20]

  ite = (dic[k]:k for k in dic)

原文地址:https://www.cnblogs.com/echo-up/p/9506510.html