为了账号安全,请及时绑定邮箱和手机立即绑定

理解序列解包:为什么使用 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 关注
  • 228 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号