多重賦值有兩種方式
一,變量賦值->右邊先完成計算,然後在賦值給左邊變量。
x,y = y,x+y
###等價於##
m = y
n = x+y
x = m
y = n
常用實例:
數據交換
a,b = 1,2
a,b = b,a
# a->2 b ->1
二,列表等多重賦值
l = [1,2,'3','4']
a,b,c,d = l
# int,int,str,str
變量個數必須等於list(tuple,dic)的長度;字典多重賦值時,賦予的是key;元組(字典)賦值時,有兩種情況。
dic = {'name':'f','class':2}
a,b = dic # a->'name'
a = dic # a-> {'name':'f','class':2}
如果當變量個數與list長度不同時,可以考慮使用*.
l = [1,2,'3']
a,*b = l
# a = 1 ,b =[2,'3']
補充一點,關於可變類型的嵌套多重賦值問題。
下面代碼是想將 index= 0 位置的元素1, 換到idnex=1的位置處,但是一種正確,一種錯誤。主要是因爲第4行代碼中,先將nums[index] 改變了,列表是可變類型,所以即刻就改變了。所以,儘量避免這樣的多重嵌套類型的賦值,以免出現錯誤。
nums = [1,2,4,4,0]
index = 0
nums[nums[index]],nums[index] = nums[index],nums[nums[index]] #正確
nums[index],nums[nums[index]] = nums[nums[index]],nums[index] #錯誤 ->死循環
#下面最好
temp = nums[index]
nums[index] = nums[temp]
nums[temp] = temp