基本概念
在Python代码中,赋值语句也许是我们最经常使用的语句。除了像 a = 3
或者 name = 'Tom'
这种简单的赋值操作外,我们还经常需要同时给多个变量赋值,如下所示:
>>> a, b, c = 1, 2, 3
>>> print(a, b, c)
1 2 3
这种赋值方式看起来很平常,但是有一个神奇的用处就是:它可以交换多个变量的值,例如:
>>> a, b, c = 1, 2, 3
>>> a, b = b, a
>>> print(a, b, c)
2, 1, 3
这种交换变量值的方式是不是很快速?如果使用其他编程语言的话,我们往往需要一个中间变量来辅助交换两个变量的值,但是在Python中,该操作却可以非常轻松的完成,因为Python提供了一个非常强大的特性,叫:序列解包。
下面就让我们来详细介绍一下这个概念。
在Python中,序列解包(Sequence Unpacking)指的是将一个序列(或任何可迭代的对象)解包,并将得到的值存储在一系列变量中。
举个例子:
>>> numbers = 1, 2, 3
>>> print(numbers)
(1, 2, 3)
>>> a, b, c = numbers
>>> print(a)
1
>>> print(b)
2
>>> print(c)
3
在这个例子中,我们首先将一个数字序列 (1, 2, 3)
赋值给变量 numbers
。在赋值过程中,我们并没有使用标准的元组格式,即 (1, 2, 3)
,而是直接将 1, 2, 3
赋值给 numbers
。Python自动将其打包为一个元组。接着,我们使用序列解包操作将 numbers
中的每个值分配给三个不同的变量 a
、b
和 c
。结果是每个变量包含列表中的不同值。
如前所述,序列解包可以轻松地实现变量交换,因为Python会自动将等号右边的变量打包成一个元组,然后在通过序列解包,将每一个值赋给等号左边的变量。
<