理解序列解包:为什么使用 set 会抛出“SyntaxError:无法分配给文字”?

我是python初学者。我最近了解到列表和元组允许赋值。


## 1)

a=[1,2,3,4]

[j,c,d,f] = a

print (j)  # prints 1

## 2)

t=(6,7,8,9)

(s1,s2,s3,s4) = t

print (s1)  # prints 6

## 3)

m={11,12,13}

{s,d,c}=m

print(s)     #Gives error

我无法理解这种行为。为什么与 set 的类似操作会出错。此外,字典也可以进行类似的操作?请帮助和解释。


慕妹3146593
浏览 229回答 2
2回答

慕虎7371278

您在列表和元组中看到的行为称为可迭代解包,用于将任何序列中的值解包为变量(只要左侧的变量与右侧的变量一样多——除非您使用扩展的可迭代开箱)。给定的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] = aw, x, y, z = bp, q, r, s = c但是,集合不支持该语法,因为它们没有任何固有的顺序(至少在 python3.6 之前没有)。所以,{p, q, r, s} = a是无效语法 ( SyntaxError: can't assign to literal) 因为python 的语法规范不支持它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python