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 """
原文地址:https://www.cnblogs.com/wind-under-the-wing/p/11769830.html