【Python基础】赋值

本文探讨了Python中的赋值运算,并通过对比常规写法与生成器写法,展示了生成器如何在斐波那契数列计算中提高速度和效率。适合于需要一边循环一边调用计算的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)Python赋值运算:

今天写一个斐波那契函数时,遇到数列前后的推导:

第一部分,常规写法:

#for 循环:
def fbn(num):    
    a0=0
    a1=1
    for i in range(num):
        a1=a0+a1
        print('第'+str(i)+'项'+';A0+A1='+str(a1)+';A0='+str(a0)+';A1='+str(a1))
        a0=a1-a0  #特别要注意该处的顺序#    
    return(a1) 
       
fbn(5)      
#第0项;A0+A1=1;A0=1;A1=1
#第1项;A0+A1=2;A0=1;A1=2
#第2项;A0+A1=3;A0=2;A1=3
#第3项;A0+A1=5;A0=3;A1=5
#第4项;A0+A1=8;A0=5;A1=8 


#while 循环:
def fbn_w(num):
    a0,a1=0,1
    i=0
    while i < num:
#        a1=a0+a1
#        print('第'+str(i)+'项'+';A0+A1='+str(a1)+';A0='+str(a0)+';A1='+str(a1))    
#        a0=a1-a0
#        i+=1
        a0,a1=a1,a0+a1
        #多个对象赋值,先按照加号的优先级,然后计算等式右边的,计算完右边后再依次顺序赋值给左边
        print('第'+str(i)+'项'+';A0+A1='+str(a1)+';A0='+str(a0)+';A1='+str(a1))    
        i+=1
    return(a1)  
    
fbn_w(5)  

第二部分,生成器写法,生成器通过调用,提升速度和效率;

适用场景:一边循环一遍调用计算;

#while 循环生成器:
def fbn_yd(num):
    a0,a1=0,1
    i=0
    while i < num:
        yield a1
        a0,a1=a1,a0+a1
        print('第'+str(i)+'项'+';A0+A1='+str(a1)+';A0='+str(a0)+';A1='+str(a1))    
        i+=1
    
yd=fbn_yd(5) 
#Out[3]: <generator object fbn_yd at 0x000000000B927410>
next(yd)
for i in yd: 
    print(i)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值