列表生成式 执行效率高 简洁
a = []for i in range(5): a.append(i*2)print(a) 列表形式
[a * 2 for a in range(5)] ##列表形式 执行效率低 主要是先完成生成 再展现 占用内存
##同样 可以传入函数 还执行
def aa(name): print(‘ni hao %s‘%name ) print [a * 2 for a in range(5)] [aa(i) for i in range(5)]
生成器 :当你调用的时候还会给出结果 从而大大提高了调度性能
b = (a * 2 for a in range(50000))print(b)
<generator object <genexpr> at 0x000000000256D3A8> ### 返回的只是一个内存地址
方法 b.next ()
python 3.x 是 b.__next__() 只能调取下一个 没有别的 方法再调取 上一个
斐波那契
def aa(num): n,a,b = 0,0,1 while n < 10: print(b) a,b = b,a+b n+=1 aa(10)
列表生成
def aa(num): n,a,b = 0,0,1 while n < 10: yield (b) ###当启用yield的时候生成的结果是一个内存地址 变成了生成器 a,b = b,a+b n+=1 aa(10) ###返回值就变成了一个生成器 ###结果 <generator object aa at 0x00000000025AD3A8> cc = aa(10) print(cc.next()) print(‘-----------‘) ### 目前达到了随意进出一个程序 来执行想要的操作 print(cc.next()) print(‘============‘)
原文地址:https://www.cnblogs.com/th-lyc/p/8572728.html
时间: 2024-10-08 23:07:51