1. 生成器

  

生成器:就是一种自定义的迭代器,是用来返回多次值
自定义迭代器的好处:节省内存 return只能返回一次值,函数就立即结束了
yield
1、可以挂起函数,保存函数的运行状态
2、可以用来返回多次值
例:
def func():
print('')
print('')
print('')
print('')
print('')
yield 1, 2
print('')
yield
print('')
yield 3
print('') yield一次 返回一个值
如何得到生成器(自定义的迭代器):
函数内但凡存在yield关键字,调用函数不会执行函数体代码,会得到一个返回值,该返回值就是我们自定义的生成器
def my_range(start, stop, step=1):
while start < stop:
yield start
start += step # g=my_range(1,5)
# print(next(g))
# print(next(g))
# print(next(g))
# print(next(g))
# print(next(g)) for i in my_range(1,5000):
print(i)

2.  面向过程编程思想

1、编程思想就是编写程序的套路,与具体的技术点无关
2、面向过程
核心是过程二字,过程就是解决问题的步骤,即先干啥、再干啥、后干啥
基于面向过程编程就好比在设计一条条的流水线 优点:将复杂的问题流程化、进而简单化
缺点:所有环节耦合到一起,环环相扣,如果要修改某个环境,有可能会牵一发而动全身,扩展性差

3. 三元表达式

  

def max2(x,y):
if x > y:
return x
else:
return y res=max2(1,2) x=1
y=2 res=x if x > y else y
print(res) res=条件成立时返回的值 if 条件 else 条件不成立时的返回值

4. 生成式的使用

  

1、列表生成式
l=[]
for i in range(11):
if i > 3:
l.append("x")
可以写成:
l = ["x" for i in range(11) if i > 3]

例:

names = ["egon_nb", "lxx_sb", "猴子_sb", "jason_sb"]

l=[]
for name in names:
if name.endswith("sb"): 把结尾为'sb' 的取出
l.append(name) l = [name for name in names if name.endswith("sb")]
names = ["lxx", "猴子", "jason"]
print([name+"_sb" for name in names])
2、字典生成式

dic = {"name": "egon", "age": 18, "gender": "male", "level": 10}

new_dic = {k.upper(): v for k, v in dic.items() if k != "level"}
new_dic = {k+"_": str(v) for k, v in dic.items() if k != "level"}
print(new_dic)
3、集合生成式
s = {i for i in "hello" if i != "l"}
print(s)
4、生成器表达式
res = (i for i in range(5))
print(res) print(next(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))
print(next(res))



day17 生成器, 面向过程, 三元表达式, 生成式的更多相关文章

  1. python 之 函数 面向过程 三元表达式 函数递归

    5.11 面向过程编程思想 核心是'过程'二字,过程即解决问题的步骤,即先干什么,再干什么........ 基于面向过程编写程序就好比在设计一条流水线,是一种机械式的思维方式. 总结优缺点: 优点:复 ...

  2. Python 迭代器-生成器-面向过程编程

    上节课复习:1. 函数的递归调用 在调用一个函数的过程中又直接或者间接地调用了函数本身称之为函数的递归 函数的递归调用有两个明确的阶段: 1. 回溯 一层一层地调用本身 注意: 1.每一次调用问题的规 ...

  3. day14 迭代器 生成器 面向过程思想

    "" 迭代器 什么是迭代器(iterator) 器指的某种工具, 迭代指的是更新换代的过程,例如应用程序的版本更新从1.0 变成 1.1 再1.2 迭代的目的是要根据上一个结果,产 ...

  4. 函数---迭代器&生成器&列表解析&三元表达式

    可迭代对象:obj.__iter__   迭代器:iter1=obj.__iter() 1iter1.__next__ 2iter2.__next__   迭代器: 优点:不依赖索引         ...

  5. python基础--递归、三元表达式、列表(字典)生成式、匿名函数、常用的内置函数

    函数的递归:函数在调用阶段直接或者间接的又调用自身 递归的两个阶段: 1.回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都是应该下降的,直接有一个最终的结束条件(这个结束条 ...

  6. python基础语法9 生成器,面向对象编程思想,三元表达式,列表生成式,生成器表达式(生成式),匿名函数,内置函数

    生成器 1.什么是生成器? 生成的工具. 生成器是一个 "自定义" 的迭代器, 本质上是一个迭代器. 2.如何实现生成器 但凡在函数内部定义了的yield, 调用函数时,函数体代码 ...

  7. day13-迭代器、三元表达式、列表推导式、字典生成式、生成器与递归

    目录 迭代器 可迭代对象 迭代器对象 for循环原理 三元表达式(三目表达式) 列表推导式 字典生成式 zip()方法 生成器 生成器表达式 递归 递归的两个阶段 迭代器 迭代器即迭代的工具,迭代是一 ...

  8. Python开发基础-Day9-生成器、三元表达式、列表生成式、生成器表达式

    生成器 生成器函数:函数体内包含有yield关键字,该函数执行的结果是生成器,生成器在本质上就是迭代器. def foo(): print('first------>') yield 1 pri ...

  9. Python基础(9)_生成器(yield表达式形式)、面向过程编程

    一.yield表达式形式 1 #装饰器,初始化含yield表达式的生成器 def init(func): def wrapper(*args,**kwargs): g=func(*args,**kwa ...

随机推荐

  1. JNI_day02

    二级指针 指向指针变量的指针,保存指针的地址 结构体 struct Student //struct Stdent 学生结构体类型 { int id;//成员 char name[20]; int a ...

  2. linux下的mysql目录

    /usr/bin 客户端程序和脚本[root@~ bin]# ls mysql*mysql mysqldump mysql_secure_installationmysqladmin mysqldum ...

  3. Android 图片裁剪踩坑

      今天做图库图片的裁剪遇到了不少坑,今天记录一下,以下坑位供各位看官参考: 如果有不对之处,欢迎各位看官留言评论! 图片裁剪踩坑锦囊: 问题一:相册裁剪权限问题 解:这个简单,对于Android6. ...

  4. [转] 浅谈C++中的那些内存泄露

    点击阅读原文 尽管学过C语言.可是C++里面的一些基础还是不太懂,还须要再掌握. 对于内存泄露,我的个人理解就是程序在执行过程中,自己开辟了空间,用完这块空间后却没有释放. 今晚上我就犯了这种低级错误 ...

  5. case when then 随手练_1

    CASE WHEN THEN随手练,就当做练习指法吧 --drop table tbStudent GO Create table tbStudent( studentId int identity( ...

  6. jmeter录制app测试脚本

    1.jmeter 下载地址 https://jmeter.apache.org 2.选择下载包 3.下载完成后解压即可使用(也可以配置环境变量,但我一般不配置,可以使用) 4.打开jmeter 创建线 ...

  7. 在Unix系统中执行可执行文件

    这篇文章是我在一个叫做Charlotte数据挖掘的公众号上看到的文章,文首提到转载自"朱小厮的博客",当我今天执行一个自己编译的可执行文件后的运行阶段想到了这篇文章,直接一次成功. ...

  8. 对 JsonConvert 的认识太肤浅了,终于还是遇到了问题

    一:背景 1. 讲故事 在开始本文之前,真的好想做个问卷调查,到底有多少人和我一样,对 JsonConvert 的认识只局限在 SerializeObject 和 DeserializeObject ...

  9. 图像处理中的valid卷积与same卷积

    valid卷积 在full卷积的卷积过程中,会遇到\(K_{flip}\)靠近I的边界(K矩阵与I矩阵),就会有部分延申到I之外,这时候忽略边界,只考虑I完全覆盖\(K_{flip}\)内的值情况,这 ...

  10. Java对MongoDB的CRUD

    https://blog.51cto.com/aiilive/1339058 MongoDB提供的Java操作API可以说是对Mongo数据库命令的Java翻译,熟悉Mongo命令,熟悉Java操作数 ...