1、复合赋值
n1,n2=n2,n1+n2
# 先计算右边表达式,再同时赋值给左边
同等于<=>
a=n2
b=n1+n2
n1=a
n2=b
实例
# 菲波那切数列
# 0,1开始,之后每个数字都是前两个数字之和
n1,n2=0,1 # 前两项
n=2 # 前n项
ns=[n1,n2]
while n<10: # 获取前10项
n1,n2=n2,n1+n2 # 先计算右边表达式,再同时赋值给左边
ns.append(n2)
n+=1
print(f"菲波那切数列的前{n}项:{ns}")
# 菲波那切数列的前10项:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
2、拆包
对于可迭代对象,如字符串、元组、列表、集合、字典等,都可以被拆包
拆包:一个结构中的数据拆分成多个单独变量
方式:
1、变量方式来接收:变量个数与右边元素数量一致
2、*
来接收多个变量
2.1 使用变量来接收单一元素
# 拆包
# 1:变量方式
stu_list=["html","pic","video","dictory"]
a,b,c,d=stu_list
print(a,b,c,d) # html pic video dictory
# 变量数不足,报错
# a,b,c=stu_list # ValueError: too many values to unpack (expected 3)
# 变量数多,报错
# a,b,c,d,e=stu_list # ValueError: not enough values to unpack (expected 5, got 4)
a,b,c="bai" # 字符串拆包
print(a,b,c)
a,b,c=(1,2,3) # 元组拆包
print(a,b,c) # 1 2 3
a,b,c={"set","set2","set3"} # 集合拆包
print(a,b,c) # set3 set2 set
a,b,c={"name":"BaiCao","age":25,"app":[]} # 字典拆包
print(a,b,c) # name age app # 获取键值
2.2 使用*来接收多个元素
# 拆包2:*使用
computer=("lenovo",3,4000,(2018,10.16))
goods,num,price,date=computer
# 只想获取价格和购买日期;前面两个元素使用一个变量即通配符来接收
*_,price2,date2=computer
print(price2,date2) # 4000 (2018, 10.16)
print(*_) # lenovo 3 # 交互模式下会报错
goods,num,*args=computer # 后面元素使用通配符来接收
image.png
# 简单拆包方式
print(*computer) # lenovo 3 4000 (2018, 10.16)
引申
*args
: 接收多余的未命名参数;args
是元组,把传入数据放进args
元组中
**kwargs
:接收形参中已命名参数:kwargs
是一个字典,命名参数放入字典中
3、end关键字
用于将结果输出到同一行,或者在输出的末尾添加不同的字符
# end 使用
a,b=0,1
print(f"斐波那契数列:{a}",end=",")
while b<100:
print(b,end=",")
a,b=b,a+b
# 斐波那契数列:0,1,1,2,3,5,8,13,21,34,55,89,