我是python初學(xué)者。我最近了解到列表和元組允許賦值。## 1)a=[1,2,3,4][j,c,d,f] = aprint (j) # prints 1## 2)t=(6,7,8,9)(s1,s2,s3,s4) = tprint (s1) # prints 6## 3)m={11,12,13}{s,d,c}=mprint(s) #Gives error我無法理解這種行為。為什么與 set 的類似操作會出錯。此外,字典也可以進(jìn)行類似的操作?請幫助和解釋。
2 回答

慕虎7371278
TA貢獻(xiàn)1802條經(jīng)驗 獲得超4個贊
您在列表和元組中看到的行為稱為可迭代解包,用于將任何序列中的值解包為變量(只要左側(cè)的變量與右側(cè)的變量一樣多——除非您使用擴(kuò)展的可迭代開箱)。
給定的
a = [1, 2, 3, 4]
b = (1, 2, 3, 4)
c = {1, 2, 3, 4}
以下是所有有效的操作:
e, f, g, h = a
# Equivalent to
# (e, f, g, h) = a
# Also equivalent to, but slightly different than
# [e, f, g, h] = a
w, x, y, z = b
p, q, r, s = c
但是,集合不支持該語法,因為它們沒有任何固有的順序(至少在 python3.6 之前沒有)。所以,
{p, q, r, s} = a
是無效語法 ( SyntaxError: can't assign to literal) 因為python 的語法規(guī)范不支持它。
添加回答
舉報
0/150
提交
取消