五、元组
- 元组操作
- 创建元组
>>> tuple1 = (1, 2, 3, 'a', [1, 2, 3])
>>> type(tuple1)
<class 'tuple'>
>>> tuple1 = tuple() # 创建空元组
>>> type(tuple1)
<class 'tuple'>
- 访问元组
>>> tuple1[4]
[1, 2, 3]
>>> tuple1[2:]
(3, 'a', [1, 2, 3])
- 更新元组(而不是更改)
元组是不可变类型,元素不允许被修改,但同样可以创建一个新的同名元组。
>>> tuple1 = (1, 2, 3, 4)
>>> id(tuple1)
2707353022272
>>> tuple1 = ('a', tuple1[0]) + ('b', 'c', 'd') + tuple1[1:]
>>> tuple1
('a', 1, 'b', 'c', 'd', 2, 3, 4)
>>> id(tuple1)
2707353181648
这就好比有两个不同的房子,编号分别为a和b,标签tuple1一开始贴在a房子上,改变后贴在了b房子上。
- 删除元组
元组的元素不可修改不可删除,万一要删除可以采用上述创建同名元组的方法。
删除整个元组(从内存中擦除)可使用del语句。
>>> del tuple1
>>> tuple1
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
tuple1
NameError: name 'tuple1' is not defined
- 元组方法
dir(tuple)
__add__ __class__ __contains__ __delattr__ __dir__ __doc__ __eq__ __format__
__ge__ __getattribute__ __getitem__ __getnewargs__ __gt__ __hash__ __init__
__init_subclass__ __iter__ __le__ __len__ __lt__ __mul__ __ne__ __new__ __reduce__
__reduce_ex__ __repr__ __rmul__ __setattr__ __sizeof__ __str__ __subclasshook__
count index
元组具有不可变特性,内置方法要比列表少。
3. 补充
- 对于列表,象征性的标识符是"[]", 那元组的标识符是什么?"()"吗?
>>> tuple1 = (100)
>>> type(tuple1)
<class 'int'>
>>> tuple1 = (100, )
>>> type(tuple1)
<class 'tuple'>
>>> tuple1 = 100,
>>> type(tuple1)
<class 'tuple'>
>>> tuple1 = 100, 200
>>> type(tuple1)
<class 'tuple'>
>>> (100) * 2
200
>>> (100, ) * 2
(100, 100)
事实证明, "," 才是元组的标识符, "()"只起到了补充作用。
-
只要不触碰到元组的不可变特性,元组在其他方面跟列表基本相同,如一些算术操作符、关系操作符等都可用在元组上,具体可参见我的上一篇随笔:四、列表
-
元组与列表相比,你可能会觉得有了列表,为什么还要使用这么一个看上去不那么灵活的数据结构。“存在即合理”,必然有元组的用武之地。在存储明确永远不会改变的,并且也不希望其他程序对其进行修改的数据时,元组就派上用场了,e.g.,地理坐标、经纬度等等。

浙公网安备 33010602011771号