楼主: z74646
3297 0

[其他] Python语言中赋值语句序列解包操作方法 [推广有奖]

  • 0关注
  • 1粉丝

本科生

75%

还不是VIP/贵宾

-

威望
0
论坛币
300 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
890 点
帖子
55
精华
0
在线时间
12 小时
注册时间
2014-2-26
最后登录
2016-7-2

楼主
z74646 发表于 2016-4-4 08:20:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

序列解包是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 "<stdin>", line 1, in <module>

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

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ValueError: too many values to unpack

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


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python语言 python girlfriend Python编程 sequence sequence 编程语言 表达式 技巧

已有 1 人评分论坛币 收起 理由
三世相思2013 + 20 精彩帖子

总评分: 论坛币 + 20   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 10:52