我是python初学者。我最近了解到列表和元组允许值分配。
Fatal Python error: Py_Initialize: unable to load the file system codec
File "D:\Users\username\venv_name\lib\encodings\__init__.py", line 123
raise CodecRegistryError,\
^
SyntaxError: invalid syntax
Current thread 0x0000d85c (most recent call first):
我无法理解此行为。为什么用set进行类似操作会出错。另外,字典也可以进行类似的操作? 请帮助和解释。
答案 0 :(得分:1)
您在列表和元组中看到的行为称为可迭代解包,用于将任何序列中的值解包为变量(只要左侧有与正确-除非您使用extended iterable unpacking)。
给予
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's grammar specification不支持。