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))



最新文章

  1. 更改SQL Server 数据库的排序规则
  2. MySQL数据库8 -子查询,联合查询
  3. JVM性能调优
  4. 多个MapReduce作业相互依赖时,使用JobControl进行管理
  5. UVa 1467 (贪心+暴力) Installations
  6. JBoss 系列十一:JBoss Cluster Framework Demo 介绍
  7. SpringBoot 配置文件 application.properties
  8. LeetCode OJ 35. Search Insert Position
  9. Oracle存储过程经典入门
  10. UVA10692:Huge Mods
  11. Linux C启动时创建pid文件
  12. Linux系统下安装JDK
  13. 嵌入式 Web Server 温度检测系统
  14. 使用Memcached提高.NET应用程序的性能(转)
  15. POI各Jar包的作用(转)
  16. BZOJ 4566 JZYZOJ 1547 [haoi2016T5]找相同子串 后缀数组 并查集
  17. Python猴子补丁
  18. 多视几何——三角化求解3D空间点坐标
  19. Disruptor Ringbuffer
  20. ABP 学习系列 - 目录

热门文章

  1. 高效开发(James)
  2. 循环使用 v-for 指令。
  3. css如何实现水平垂直居中
  4. Nice Jquery Validator 方法
  5. 学习第一个python程序
  6. windows下Python版本切换使用方法
  7. iphone手机卡顿解决方案
  8. cc38b_demo_C++_异常_(2)txwtech在异常中使用虚函数-多态
  9. 绕过PowerShell执行策略方法总结
  10. Window下将nginx配置为开机自动启动