Python的序列封包和序列解包功能---两种赋值方式实例说明

Python提供了序列封包和序列解包功能,可以实现:

1、将多个值赋给一个变量时,Python会自动将多个值封装成元组。这个功能就称为序列封包;

2、允许将序列(元组或者列表等)直接赋值给多个变量,此时序列的各元素被依次赋值给每一个变量,此处要求序列的元素个数和变量个数相等,这个功能就成为序列解包。

例如:

# 序列封包示例,将1、2、3封装成元组后赋值给nums

>>> nums = 1, 2, 3
>>> print(nums)
(1, 2, 3)
>>> print(nums[1])
2

# 序列解包,将tuple_temp的各元素依次赋值给a, b, c, d, e

>>> tuple_temp = tuple(range(1, 10, 2))
>>> print(tuple_temp)
(1, 3, 5, 7, 9)
>>> a, b, c, d, e = tuple_temp
>>> print(a, b, c, d, e)
1 3 5 7 9

# 将序列封包和序列解包同时运用,就可以让赋值运算符支持同时将多个值赋值给多个变量。例如:

>>> a, b, c = 1, 2, 3
>>> print(a, b, c)
1 2 3

# 此处相当于执行了如下过程:

# 先进行序列封包,将1、2、3封装到元组abc中

abc = 1, 2, 3

# 再执行序列解包到变量a、b、c中

a, b, c = abc

# 序列解包时,可以解出部分变量,剩下的依然使用列表变量保存。为了这样操作,Python允许在左边被赋值的变量之前添加“*”,那么该变量就代表一个列表,可以保存多个集合元素,例如:

>>> a, b, *restnum = range(10)
>>> print(a)
0
>>> print(b)
1
>>> print(restnum)
[2, 3, 4, 5, 6, 7, 8, 9]

>>> *frontnum, lastnum = range(10)
>>> print(frontnum)
[0, 1, 2, 3, 4, 5, 6, 7, 8]
>>> print(lastnum)
9

>>> frontnum, *middlenum, lastnum = range(10)
>>> print(frontnum)
0
>>> print(middlenum)
[1, 2, 3, 4, 5, 6, 7, 8]
>>> print(lastnum)
9

posted @ 2019-12-25 16:13  土豆笔记  阅读(937)  评论(0编辑  收藏  举报