[关闭]
@songying 2018-07-27T22:19:03.000000Z 字数 1307 阅读 1080

python元组

python数据类型


元组的相对不可变性

元组中保存的是对象的引用,如果引用的元素是可变的,即便元组本身不可变,元素依然可变。也就是说,元组的不可变性其实是指 tuple 数据结构的物理内容(即保存的引用)不可变,与引用的对象无关。

举例来说,如果一个元组中包含了一个列表,那么:

  1. t = (1, 2, [30, 40])
  2. t[-1].append(99)

此时的元组t就已经发生了变化。

基本知识

元组与列表类似,但是元组的元素不能修改。虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

  1. test = ('google', 'baidu', 'sougou') # 创建元组
  2. test = () #创建空元组
  3. # 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
  4. test = (5) # 不加逗号,为整型
  5. test = (50,) # 加上逗号,类型为元组
  6. test[0] #访问元组
  7. test[0] = 100 # 修改元组,非法
  8. del test[0] # 删除元组元素,非法
  9. del test # 删除整个元组

Tuple切片

  1. print (tuple) # 输出完整元组
  2. print (tuple[0]) # 输出元组的第一个元素
  3. print (tuple[1:3]) # 输出从第二个元素开始到第三个元素
  4. print (tuple[2:]) # 输出从第三个元素开始的所有元素
  5. print (tinytuple * 2) # 输出两次元组
  6. print (tuple + tinytuple) # 连接元组

元组运算符

Python 表达式 结果 描述
len((1, 2, 3)) 3 计算元素个数
(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) 连接
('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') 复制
3 in (1, 2, 3) True 元素是否存在
for x in (1, 2, 3): print x, 1 2 3 迭代

元组索引

Python 表达式 结果 描述
L[2] 'Runoob!' 读取第三个元素
L[-2] 'Taobao' 反向读取;读取倒数第二个元素
L[1:] ('Taobao', 'Runoob!') 截取元素,从第二个开始后的所有元素。

相关内置函数

序号 方法及描述
len(tuple) 计算元组元素个数。
max(tuple) 返回元组中元素最大值。
min(tuple) 返回元组中元素最小值。
tuple(seq) 将列表转换为元组。

元组实现的方法和特殊方法

元组和列表中都具有的

方法 作用
s.__add__(s2) 元组拼接 s + s2
s.__contains__(e) s中是否包含e
s.count(e) e在s中的计数
s.__getitem__(p) s[p]
s.index(e) 在 s 中找到元素 e 第一次出现的位置
s.__iter__() 获取 s 的迭代器
s.__len__() len(s) ,元素的数量
s.__mul__(n) s * n ,n个 s 的重复拼接
s.__rmul__(n) n * s ,反向拼接 *

元组具有而列表没有的

方法 作用
s.__getnewargs__() 在 pickle 中支持更加优化的序列化
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注