Python学习笔记06-元组

什么是元组

另一种有序列表叫做元组tuple

tuple 和 list 很相似,但是 tuple 一旦创建就不能再修改。

元组使用小括号(),列表使用中括号[]

元组和列表共同特性:

  • 索引:使用方括号 [] 进行索引访问,如 seq[0]
  • 切片:使用方括号 [:] 进行切片,如:seq[2:7]
  • 加:使用加号 + 进行序列拼贴,如: seq = seq1 + seq2
  • 乘:使用乘号 * 进行序列重复,如: seq = tinySeq * 5
  • 检查成员资格:使用 innot in 检查成员资格,如:e in seq

创建元组

只需要在括号中添加元素,并使用逗号隔开即可。

>>> t1 = (1, 2, 3)
>>> t1
(1, 2, 3)
>>> t2 = 1, 2, 3  #不使用括号也可以
>>> t2
(1, 2, 3)

创建空元组

>>> t3 = ()
>>> t3
()

创建一个元素元组

元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用:

>>> t4 = (10)
>>> type(t4)    #不加逗号,类型为整型
<class 'int'>
>>> t4 = (10,)
>>> type(t4)    #加上逗号,类型为元组
<class 'tuple'>

访问元组

可以使用索引下标来访问元组的值:

>>> t1
(1, 2, 4)
>>> t1[1]
2
>>> t1[0:2]
(1, 2)

修改元组

元组中的元素是不能被修改的,但是可以进行连接组合新的元组:

>>> t1
(1, 2, 4)
>>> t2
(1, 2, 3)
>>> t1[0] = 11  #不能修改元组值
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>>
>>> t1 + t2     #多个元组进行连接
(1, 2, 4, 1, 2, 3) 

删除元组

元组中的值是不能被删除的,但是可以删除整个元组:

>>> t1
(1, 2, 4)
>>> del t1

“可变的” 元组

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

咦??这个 tuple 定义的时候有 3 个元素,分别是’a’,’b’和一个 list。不是说 tuple 一旦定义后就不可变了吗?怎么后来又变了?

别急,我们先看看定义的时候 tuple 包含的 3 个元素:

当我们把 list 的元素’A’和’B’修改为’X’和’Y’后,tuple 变为:

表面上看,tuple 的元素确实变了,但其实变的不是 tuple 的元素,而是 list 的元素,tuple 一开始指向的 list 并没有改成别的 list。

所以,tuple 所谓的 “不变” 是说,tuple 的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个 list,就不能改成指向其他对象,但指向的这个 list 本身是可变的!

理解了 “指向不变” 后,要创建一个内容也不变的 tuple 怎么做?那就必须保证 tuple 的每一个元素本身也不能变。

猜你喜欢

转载自blog.csdn.net/u013958997/article/details/80941337