亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

理解序列解包:為什么使用 set 會拋出“SyntaxError:無法分配給文字”?

理解序列解包:為什么使用 set 會拋出“SyntaxError:無法分配給文字”?

慕妹3146593 2021-09-25 16:31:16
我是python初學者。我最近了解到列表和元組允許賦值。## 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 的類似操作會出錯。此外,字典也可以進行類似的操作?請幫助和解釋。
查看完整描述

2 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

您在列表和元組中看到的行為稱為可迭代解包,用于將任何序列中的值解包為變量(只要左側的變量與右側的變量一樣多——除非您使用擴展的可迭代開箱)。


給定的


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 的語法規范不支持它。


查看完整回答
反對 回復 2021-09-25
  • 2 回答
  • 0 關注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號