tuple 元组
什么是tuple
元组是一种和列表非常相似的线性数据结构,也支持不同的数据类型。
最大的区别就是元组一旦创建不可改变,和string一样,所有改变元组内容的操作都会返回一个新的元组。
对于可变、不可变的理解:
元组和列表一样,都是存储引用而不是对象本身,因此所谓的不可修改是指元组自己的每一个元素保存的引用不能被修改。如果元组某个元素的引用是另一个引用,我们也可以做到“修改元组内容”。例如:
t = (1, 'a', [])
t[2].append(1)
>>>
(1, 'a', [1])
在上例中,元组的第三个元素引用了一个列表, 但这个列表是可变的,我们在改变列表的同时并没有改变元组的引用,该元素依然引用的是同一个列表,所以这样也可以“修改“元组。
//TODO
tuple有哪些功能
tuple的创建
t1 = ()
t2 = tuple()
t3 = (1,2,3)
要注意的是当元组只有一个元素时,需要加上一个逗号来区分
tup1 = (50) ## 在这种写法下,括号被认为是数学表达式,而非元组
type(tup1)
>>> <class 'int'>
tup2 = (50,) ## 为了区分,我们应该在单元素元组中加入一个逗号
type(tup2)
>>> <class 'tuple'>
tuple的方法
因为tuple不可更改,所以所有的改变自身的方法都不可以使用,例如:sort(), reverse()和append()等,但是支持合并操作。
剩下的所有list的方法tuple都支持,各种相关方法的时间复杂度也可参考list
tuple的优点和缺点
优点:
- 更安全:由于元组的不可更改的特点,它比数组更安全,更高效(内存使用方面)
缺点:
- 不灵活:很多时候我们需要对数据结构进行数据的添加、删除或修改,而元组不可修改的特性使得它的适用性比较低。
最好的办法是将元组看做列表的补充,而不是一种单独的数据结构。当我们需要维护数据的安全而禁止修改数据时可以利用元组,当我们需要随时对数据内容进行该改动时就用列表。
相关章节