python中元组(tuple)的拆包unkacping
python中的元组tuple同列表ist相比较,既有相同又有不同,元组一般用()圆括号来定义,不同之处总结起来在于元组中的元素是不能修改的,而其余的索引index,切片,运算符操作等等和list基本一样,但是tuple有了个拆包unpacking的用法,今天学习过程中遇到了,同大家分享如下:
Python中如果要初始化多个变量,可以用下面的方式:
1 >>>a,b,c,d = 1,2,3,4 2 >>>a,b,c,d 3 >>>(1, 2, 3, 4)
以上代码给a,b,c,d分别赋值1,2,3,4,这时候a是1,b是2,c是3,d是4
还有更绝的拆包方法,那就是用星号*
来吸收多余的元素:
1 In [146]: x = (1,2,3,4,5) 2 3 >>>a, *b = x # x有5个元素,左边变量只有两个,多余的都被带*的b吸收了 4 5 >>>a, b 6 >>>(1, [2, 3, 4, 5]) 7 8 >>>a, *b, c = x #由于带*的b的存在,b“吸收”了多余元素 9 >>>a,b,c 10 >>>(1, [2, 3, 4], 5) 11 12 >>>*a, b, c = x #带*的a“吸收”多余元素 13 14 >>>a,b,c 15 >>>([1, 2, 3], 4, 5) 16 17 >>>a,b,c = x #没有带*的,x的5个元素无法匹配3个变量,产生错误 18 19 """ 20 此处会报出一个错误: 21 ValueError Traceback (most recent call last) 22 <ipython-input-153-58e3b82a91cc> in <module> 23 ----> 1 a,b,c = x 24 25 ValueError: too many values to unpack (expected 3) 26 """