5.2.1Python序列解包

Posted by 撒得一地 on 2016年3月5日 in python教程

赋值语句的例子有很多,其中包括对变量和数据结构成员的(比如列表中的位置和分片以及字典中的槽)赋值。但赋值的方法还不止这些。比如,用序列解包的方法给多个变量同时进行赋值操作:

>>> x,y,z = 1,2,3
>>> print(x,y,z)
1 2 3

Python序列解包的方法非常有用,还可以用它交换两个(或更多个)变量也是没问题的,如:

>>> x,y,z = 1,2,3
>>> print(x,y,z)
1 2 3
>>> x,y = y,x
>>> print(x,y,z)
2 1 3

事实上,这里所做的事情叫做序列解包(sequence unpacking)或可选代解包一一将多个值的序列解开,然后放到变量的序列中。更形象一点的表示出来就是: 

>>> values = 1,2,3
>>> values
(1, 2, 3)
>>> x,y,z = values
>>> x
1

当函数或者方法返回元组(或者其他序列或可迭代对象)时,这个特性尤其有用。假设需要获取(和删除)字典中任意的键一值对,可以使用popitem方法,这个方法将键一值作为元组返回。那么这个元组就可以直接赋值到两个变量中:

>>> person = {'name':'psz','age':18}
>>> key,value = person.popitem()
>>> key
'age'
>>> value
18

它允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易进行访问。所解包的序列中的元素数量必须和放置在赋值符号(=)左边的变量数量完全一致,否则Python会在赋值时引发异常,比如:

>>> a,b,c = 1,2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.