生成器:

函数与yield连用,凡是函数中有yield的,调用该函数的时候均不会立即执行,而是会返回一个生成器。

生成器本质上是一个迭代器,需要通过    【生成器.__next__()】或者【next(生成器)】取值。

创建生成器的函数中的return只有终止函数的功能,不会有任何返回值。

yield:yield会保存函数的暂停状态,并返回一个生成器,以后每次执行一次yield会向生成器中增加一个值。yield一定要在函数内部定义。

yield与return的区别:

yield可以执行无数次返回多次值,return只能执行一次返回一次值。

yield和return后面返回的值可以是无限个数。返回多个值的时候,以元组的形式储存

写一个自定义的生成器,模拟内置的range()函数

再次注意:生成器本质上也是一个迭代器,也是一个可迭代对象,生成器也可以通过for循环取值

# _*_ coding: gbk _*_
# @Author: Wonder
def my_range(start, end, sep=1):
while start < end:
yield start
start += sep res = my_range(1, 10) # 生成器res,打印res获得的是内存地址
print(res) # <generator object my_range at 0x000001E3E0463CC8>
i = 0
while True:
try:
i += 1
print(f'统计次数{i}')
print(res.__next__()) # 与next(res)效果一样
print(next(res))
except StopIteration: # 取值到最后抛出异常退出
break

生成器的取值方式在上述例子中已经体现了,下面通过for循环取值

def fib(n):
a, b = 0, 1
while (n > 0):
yield b
a, b = b, a + b
n -= 1
return a
for i in fib(4): # 生成器也是可迭代的,所以可以用for循环取值
print(i)

请用自己认为通俗易懂的话简述面向过程编程思想,并列举优缺点。
面向过程编程思想就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
优点:将复杂问题流程化,简单化
缺点:扩展性差,若修改已设计的一部分功能,会影响其他功能

    

三元表达式 :条件成立的返回值 if 条件判断 else 条件不成立的返回值

# _*_ coding: gbk _*_
# @Author: Wonder
def tree(num1, num2):
res = num1 if num1 > num2 else num2
return res
print(tree(11, 12)) # 12

  

列表生成式和生成器表达式: 

可以一行生成列表  [line for line in 可迭代对象 条件判断 ]  将可迭代对象中的值依次取出,生成一个新的列表

除yield生成生成器外,还可以通过生成器表达式生成生成器,语法结构和列表生成式一样,外层将中括号换成小括号即可

generator1 = (line for line in range(10))  # 生成器表达式
print(generator1) # <generator object <genexpr> at 0x0000016448E777C8>
list3 = [line for line in range(10)] # 列表生成式
print(list3) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  

匿名函数lambda     

表达式 lambda   参数:与参数有关的返回值,也可以是与参数无关的固定值

lambda parameters : expression 

parameters:参数,可以为空,一般提供位置参数,用逗号隔开

expression: 相当于返回值,可以是一个表达式,但不能有分支和循环,也不能出现return和yield

匿名函数要和内置函数一起使用才有意义。

# _*_ coding: gbk _*_
# @Author: Wonder
dict1 = {3: 5,
5: 2,
7: 1} # 取出value值最大的一条
print(max(dict1, key=lambda x: dict1[x])) # 取value最大的
print(max(dict1,key=lambda x:x)) # 取key最大的

  

内置函数

max( 可迭代对象,key=XXX)

sorted(可迭代对象,key==XX,reverse=XX)

CSIC_716_20191114【生成器、匿名函数、内置函数、三元表达式、列表生成式、生成器表达式】的更多相关文章

  1. Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数

    Python第七天   函数  函数参数   函数里的变量   函数返回值  多类型传值     函数递归调用   匿名函数   内置函数 目录 Pycharm使用技巧(转载) Python第一天   ...

  2. 12.Python略有小成(生成器,推导式,内置函数,闭包)

    Python(生成器,推导式,内置函数,闭包) 一.生成器初始 生成器的本质就是迭代器,python社区中认为生成器与迭代器是一种 生成器与迭代器的唯一区别,生成器是我们自己用python代码构建成的 ...

  3. python 匿名函数&内置函数

    匿名函数:为了解决那些功能很简单的需求而设计的一句话函数怎么定义匿名函数: cal = lambda x : x*x # cal是函数名,lambda是定义匿名函数的关键字 冒号前面的额x是参数即函数 ...

  4. Python函数04/生成器/推导式/内置函数

    Python函数04/生成器/推导式/内置函数 目录 Python函数04/生成器/推导式/内置函数 内容大纲 1.生成器 2.推导式 3.内置函数(一) 4.今日总结 5.今日练习 内容大纲 1.生 ...

  5. python学习day11 函数Ⅲ (内置函数与lambda表达式)

    函数Ⅲ(内置函数&lambda表达式) 1.函数小高级 函数可以当做变量来使用: def func(): print(123) func_list = [func, func, func] # ...

  6. Python学习笔记014——迭代工具函数 内置函数enumerate()

    1 描述 enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. 2 语法 enumerate(sequ ...

  7. python 函数--内置函数

    一.内置函数 内置函数是python自带的一系列常用函数. 二.python3中内置函数     内置功能     abs() delattr() hash() memoryview() set() ...

  8. Python入门之三元表达式\列表推导式\生成器表达式\递归匿名函数\内置函数

    本章目录: 一.三元表达式.列表推导式.生成器表达式 二.递归调用和二分法 三.匿名函数 四.内置函数 ================================================ ...

  9. Python 函数递归-三元表达式-列表生成式-字典生成式-匿名函数-内置函数

    上节课复习: 1. 无参装饰器 def 装饰器名字(func): def wrapper(*args,**kwargs): res = func(*args,**kwargs) return res ...

  10. python之三元表达式与生成式与匿名与内置函数(部分)

    目录 三元表达式 各种生成式 列表生成式(可同样作用于集合) 字典生成式 匿名函数 重要内置函数 map() zip() filter() reduce() 常见内置函数(部分) 三元表达式 三元表达 ...

随机推荐

  1. rpm升级时spec文件执行的流程

    转自:https://www.cnblogs.com/zafu/p/7423758.html %pre 和 %post 脚本片段分别在软件包安装前和安装后执行.%preun 和 %postun 脚本片 ...

  2. ps--窗口配置

    移动工具设置 v 选择图层自动选择不勾 图层ctrl + 左键 视图设置智能参考线标尺 Ctrl+r 窗口设置 关闭 库 颜色 打开 信息 字符 图层 历史记录 信息 面板选项 鼠标单位 像素 rgb ...

  3. SB般的“WE战队”输掉了比赛

    事实再一次证明,对于LOL这种游戏,国服选手是根本就不能有一点期待的, 国服环境太好了,赢了可以吹,输了不能骂,自信心极度膨胀,估计WE俱乐部都没有个心理咨询师, 下岗了还可以再卖卖脸,卖卖饼, 国服 ...

  4. Vue之自建管理后台(三)登录页面

    在做登录页面之前,我们必须得完成路由的设定... 按照之前的设计我们路由的文件夹是src/router 官方默认的index.js,如下: import Vue from 'vue' import R ...

  5. 微信app支付返回-1的问题

    我也是被坑就当留个纪念 前两天查了各种关于微信app支付返回-1的都是ERR_COMM 问题然后各种 验证最后还是误解 第三天去验证了一下微信开放平台发现了问题 appid 不在同一个开放平台 项目之 ...

  6. 2018-2-13-win10-uwp-如何拖动一个TextBlock的文字到另一个TextBlock-

    title author date CreateTime categories win10 uwp 如何拖动一个TextBlock的文字到另一个TextBlock lindexi 2018-2-13 ...

  7. wall -- 向所有人的终端发送消息

    总览 (SYNOPSIS) wall [ message ] 描述 (DESCRIPTION) Wall 向 所有 登录的 并且 mesg(1) 权限 设为 yes 的 用户 发送 消息. 消息可以 ...

  8. 杭电多校第一场-B-Operation

    题目描述 There is an integer sequence a of length n and there are two kinds of operations:0 l r: select ...

  9. Effective C++之条款1:视C++为一个语言联邦

    C++中的sub-languages有如下四种: C Object-Oriented C++:   (classes ,encapsulation(封装),inheritance(继承),polymo ...

  10. 伪类元素before&after

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...