我们写代码时,要定义多个变量一般会用到以下方法:
a, b, c, d = 1, 2, 3, 4
其中 1, 2, 3, 4 其实是一个元组: (1, 2, 3, 4)
在python中,不止元组的元素可以分别赋值给相应变量,所有可迭代对象都可以:
a, b = [1, 2] a, b = "12" # 得到的是字符串
有时候我们想丢弃一些选项,可以用占位符:_ or ign
>>> a, _, _, b = 1, 2, 3, 4 >>> print a >>> print b >>> 结果: >>> 1 >>> 4
这样就实现了可迭代对象赋值给多个变量的功能,但是有一个前提:变量的数量跟可迭代对象的数量需要相等,如果不相等会报。
那么,如果等号两边数量不相等呢?会报如下错误:
>>> x, y, z = (1, 2) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: need more than 2 values to unpack
现实在很多业务场景下,可迭代对象的数量是无法确定的,有没有一种方法可以实现这种场景下可迭代对象赋值给多个变量呢?
python提供的 * 表达式可以解决这个问题:
>>> a, *args, b = [1, 2, 3, 4, 5] >>> print a >>> print args >>> print b 结果: >>> 1 >>> [2, 3, 4] >>> 5
原文:https://www.cnblogs.com/chenjialuo/p/10730535.html