目录
- 元组基本介绍
- 可变对象
- 元组和列表的区别
- 元组的解包(Unpacking)
1. 元组基本介绍
- 元组表现形式tuple
- 元组是一个不可变序列(一般当我们希望数据不改变时,我们使用元组,其他情况下基本都用列表)
- 使用()创建元素
- 元组不是空元组至少有一个 逗号(,) 当元组不是空元组时括号可以省略
- 元组解包指将元组当中的每一个元素都赋值给一个变量
总结:被束缚的列表。不能修改,标志是逗号。
2. 可变对象
Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型
可变对象中都保存了三个数据
• id(标识)
• type(类型)
• value(值)
3. 元组和列表的区别
3.1元组与列表相同的操作:
- 使用方括号加下标访问元素
- 切片(形成新元组对象)
- count()/index()/len()/max()/min()/tuple()
- 元组的拼接,乘法运算
3.2 元组的特别之处
-
不能被修改:
比如我们记录了某人的身份证号,那么我们将不允许它被修改了。这样就比较安全。这就是元组的用处了。
但这也不是绝对滴!
元组只保证它的一级子元素不可变,对于嵌套的元素内部,不保证不可变!
>>> tup = ('a', 'b', ['A', 'B'])
>>> tup[2][0] = 'X'
>>> tup[2][1] = 'Y'
>>> tup
('a', 'b', ['X', 'Y'])
所以,在使用元组的时候,请尽量使用数字、字符串和元组这种不可变的数据类型作为元组的元素,这样就能确保元组不发生变化。
4. 元组的解包(Unpacking)
Python中如果要初始化多个变量,可以用下面的方式:
>>> a,b,c,d = 1,2,3,4
>>> a,b,c,d
(1, 2, 3, 4)
以上代码给a,b,c,d分别赋值1,2,3,4,这时候a是1,b是2,c是3,d是4
还有更绝的解包方法,那就是用星号*来吸收多余的元素:
>>> x = (1,2,3,4,5)
>>> a, *b = x # x有5个元素,左边变量只有两个,多余的都被带*的b吸收了
>>> a, b
(1, [2, 3, 4, 5])
>>> a, *b, c = x
>>> a,b,c
(1, [2, 3, 4], 5)
>>> *a, b, c = x
>>> a,b,c
([1, 2, 3], 4, 5)
>>> a,b,c = x #没有带*的,x的5个元素无法匹配3个变量
---------------------
ValueError Traceback (most recent call last)
<ipython-input-153-58e3b82a91cc> in <module>
----> 1 a,b,c = x
ValueError: too many values to unpack (expected 3)
网友评论