In [1]:
p = (4, 5)
x, y = p
In [2]:
x
Out[2]:
In [3]:
y
Out[3]:
In [4]:
data = ["ACME", 50, 91.1, (2012, 12, 21)]
name, shares, price, date = data
In [5]:
name
Out[5]:
In [6]:
date
Out[6]:
In [7]:
name, shares, price, (year, mon, day) = data
In [8]:
name
Out[8]:
In [9]:
year
Out[9]:
In [10]:
mon
Out[10]:
In [11]:
day
Out[11]:
如果变量个数和序列元素的个数不匹配,会产生一个异常。
代码示例:
In [12]:
p = (4, 5)
x, y, z = p
讨论
实际上,这种解压赋值可以用在任何可迭代对象上面,而不仅仅是列表或者元组。 包括字符串,文件对象,迭代器和生成器。
代码示例:
In [13]:
s = "Hello"
a, b, c, d, e = s
In [14]:
a
Out[14]:
In [15]:
b
Out[15]:
In [16]:
e
Out[16]:
有时候,你可能只想解压一部分,丢弃其他的值。对于这种情况 Python
并没有提供特殊的语法。 但是你可以使用任意变量名去占位,到时候丢掉这些变量就行了。
代码示例:
In [17]:
data = ["ACME", 50, 91.1, (2012, 12, 21)]
_, shares, price, _ = data
In [18]:
shares
Out[18]:
In [19]:
price
Out[19]:
你必须保证你选用的那些占位变量名在其他地方没被使用到。