列表推导式
list= [i for i in range(1,10)]
for可以进嵌套
list = [i for i in range(1,10)for j in rangr(1.3)]
for 后可加条件
list = [i for i in range(1,10)if i%2==1]
生成器
g=(i for i in range(1,10))
next(g)#获取生成器的下一个返回值
没有元素时,抛出Stoplteration异常
也可以用for循环遍历
for i in g:
print(1)
与列表推导式相比,生成器调用一次,计算一次,不调用不计算,所以占用内存少。
在函数中使用yield,此函数就变成一个生成器。例如:
def fib(x):
a=0
b=1
i=0
while i<x:
yield b#变成了生成器
a,b=b,a+b
i = i+1
return "done"#此句不会执行
g = fib(5)
for i in g:
print(i)
g.__next__()也可以或者生成器的下一个返回值
g.send()可向生成器里传入数值