五、元组

  1. 元组操作
  • 创建元组
>>> 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
  1. 元组方法
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.,地理坐标、经纬度等等。

posted @ 2020-11-01 20:20  YuMi-sharing  阅读(83)  评论(0)    收藏  举报