26.列表生成式,生成器,斐波那契数列


列表生成式
a=[1,2,3,4,5,6,7,8,9]
a=[i+1 for i in a]
print(a)


生成器 generator
在python中,这种一边循环,一边计算后面元素的机制,称为生成器
列表生成式 [i*i for i in range(10)] 列表元素直接生成,占内存空间
生成器 (i*i for i in range(10))
不生成列表元素,而是生成一个器物,只是生成了一个算法,只有调用一次才产生一个元素。next(),惰性运算,元素next完会报错,而for循环调用生成器,调用完不会报错



斐波那契数列
除第一个和第二个数以外,其余的数都是由前一个数和后一个数相加得到。
a=0
b=1
count=0
while count<20:
temp=a #在给新a赋值之前,先把旧a存储起来,以便b的计算。b=a(旧a# )+b
a=b
b=temp+b
count+=1
print(a,b)


斐波那契数列函数
def fib(n):
a = 0
b = 1
count = 0
while count < n:
temp = a # 在给新a赋值之前,先把旧a存储起来,以便b的计算。b=a(旧a# )+b
a = b
b = temp + b
print(a, b)
count += 1


fib(20)
#斐波那契数列生成器
def fib(n):
a = 0
b = 1
count = 0
while count < n:
temp = a # 在给新a赋值之前,先把旧a存储起来,以便b的计算。b=a(旧a# )+b
a = b
b = temp + b
yield b #暂停,并返回b,直到下一次next调用,执行yield后面的程序
count += 1
# print(a, b)

f=fib(20)
print(f.__next__())
print(f.__next__())
print(f.__next__())
print(f.__next__())
print(f.__next__())
print("---do something else---")# 可以中断函数,执行一段无函数无关代码,然后下次next 继续执行函数
print(f.__next__())
print(f.__next__())

转载于:https://www.cnblogs.com/xh716/p/11570584.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值