python中赋值语句_Python语言中赋值语句序列解包操作方法

序列解包是Python编程语言(http://www.maiziedu.com/course/python-px/)中赋值语句的一种技巧方法,如果要为多个变量赋值,按照以前的方法,会操作很多次才能完成,如果使用序列解包,就只需要一个表达式就可以完成多个变量赋值操作。那么赋值语句序列解包操作方法有哪些呢,比如,多个赋值操作可以同时进行:

>>> x, y, z = 1, 2, 3

>>> print x, y, z1 2 3

# 很有用吧?用它交换两个(或更多个)变量也是没问题的:

>>> x, y = y, x>>> print x, y, z2 1 3

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

>>> values = 1, 2, 3

>>> values

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

>>> y2

>>> z3

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

>>> scoundrel = {"name": "XuHoo", "girlfriend": "None"} # =_=

>>> key, value = scoundrel.popitem()>>> key'girlfriend'

>>> value'None'

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

>>> x, y, z = 1, 2

Traceback (most recent call last):

File "", line 1, in

ValueError: need more than 2 values to unpack>>> x, y, z = 1, 2, 3, 4

Traceback (most recent call last):

File "", line 1, in

ValueError: too many values to unpack

注:Python3.0中有另外一个解包的特性:可以像在函数的参数列表中一样使用星号运算符(参见第六章)。例如,a, b, *rest = [1, 2, 3, 4]最终会在a和b都被赋值之后将所有的其他的参数都收集到rest中。本例中,rest的结果将会是[3, 4]。使用星号的变量也可以放在第一个位置,这样它就总会包含一个列表。右侧的赋值语句可以是可迭代对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值