python-多重賦值問題

多重賦值有兩種方式

一,變量賦值->右邊先完成計算,然後在賦值給左邊變量。

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章