python函数--生成器,生成器表达式,列表推导式

Posted 水晶冰洛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数--生成器,生成器表达式,列表推导式相关的知识,希望对你有一定的参考价值。

1. 今日内容大纲

   2. 生成器

      + yield
      + yield return
      + yield from

   3. 生成器表达式,列表推导式

   4. 内置函数 I

      


 

   

3. 今日内容

   + 生成器

     + 生成器:python社区,生成器与迭代器看成是一种。生成器的本质就是迭代器。唯一的区别:生成器是我们自己用python代码构建的数据结构。迭代器都是提供的,或者转化得来的。
       + 获取生成器的三种方式:
         + 生成器函数。
         + 生成器表达式。
         + python内部提供的一些。
     + 生成器函数获得生成器:

     ```python
     函数
     def func():
         print(111)
         print(222)
         return 3
     ret = func()
     print(ret)
     
     生成器函数
     def func():
         print(111)
         print(222)
         yield 3
         a = 1
         b = 2
         c = a + b
         print(c)
         yield 4
     ret = func()
     # print(ret)
     print(next(ret))
     print(next(ret))
     print(next(ret))
     一个next 对应一个yield
     
     ```

     + yield return

       return:函数中只存在一个return结束函数,并且给函数的执行者返回值。
       yield:只要函数中有yield那么它就是生成器函数而不是函数了。生成器函数中可以存在多个yield,yield不会结束生成器函数,一个yield对应一个next。

     + 吃包子练习题:

       ```python
       def func():
           l1 = []
           for i in range(1,5001):
               l1.append(f{i}号包子)
           return l1
       ret = func()
       print(ret)
       
       def gen_func():
           for i in range(1,5001):
               yield f{i}号包子
       ret = gen_func()
       # [3号包子.]
       for i in range(200):
           print(next(ret))
       
       for i in range(200):
           print(next(ret))
       
       ```

     + yield from

       ```python
       def func():
           l1 = [1, 2, 3, 4, 5]
           yield l1
       ret = func()
       print(next(ret))
       
       
       
       def func():
           l1 = [1, 2, 3, 4, 5]
           yield from l1
           ‘‘‘
           yield 1
           yield 2
           yield 3
           yield 4
           yield 5
           ‘‘‘
           将l1这个列表变成了迭代器返回。
       ret = func()
       print(next(ret))
       print(next(ret))
       print(next(ret))
       print(next(ret))
       print(next(ret))
       
       ```

       

   + 生成器表达式,列表推导式

     + 用一行代码构建一个比较复杂有规律的列表。

     + 列表推导式:

       + 循环模式:[变量(加工后的变量) for  变量  in  iterable]
       + 筛选模式:[变量(加工后的变量) for  变量  in  iterable if 条件]

     + 循环模式讲解

       练习题:

       

   + 内置函数 I

4. 今日总结

   1. 生成器:***
   2. 生成器函数 yield 
   3. yield与return 区别。yield from
   4. 列表推导式,生成器表达式。 ***
   5. 内置函数:今天讲的内置函数,了解。


+ 生成器:生成器就是迭代器,生成器是自己用python代码构建的。
+ 1,生成器函数
+ 2,生成器表达式
+ 3,python内部提供的。
+ 如何判断你函数,还是生成器函数?
+ yield
+ yield return
+ 吃包子。敲三遍。
+ yield from 将一个可迭代对象,变成一个生成器。
+ 列表推导式,生成器表达式。
+ 循环模式: [变量(加工后的变量) for 变量 in iterable]
+ 筛选模式: [变量(加工后的变量) for 变量 in iterable if 条件]
+ 内置函数?68.
+



 

以上是关于python函数--生成器,生成器表达式,列表推导式的主要内容,如果未能解决你的问题,请参考以下文章

Python之第十五天的努力--生成器,列表推导式,生成器表达式,内置函数1(了解)

python——函数 20三元表达式列表推导式生成器表达式

python之生成器和列表推导式

Python 三元表达式列表推导式生成器表达式

python学习第十二天,生成器,列表推导式

04python 中的各种推导式(python函数)