@songying
2018-07-27T22:19:03.000000Z
字数 1307
阅读 1080
python数据类型
元组中保存的是对象的引用,如果引用的元素是可变的,即便元组本身不可变,元素依然可变。也就是说,元组的不可变性其实是指 tuple 数据结构的物理内容(即保存的引用)不可变,与引用的对象无关。
举例来说,如果一个元组中包含了一个列表,那么:
t = (1, 2, [30, 40])
t[-1].append(99)
此时的元组t就已经发生了变化。
元组与列表类似,但是元组的元素不能修改。虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
test = ('google', 'baidu', 'sougou') # 创建元组
test = () #创建空元组
# 元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
test = (5) # 不加逗号,为整型
test = (50,) # 加上逗号,类型为元组
test[0] #访问元组
test[0] = 100 # 修改元组,非法
del test[0] # 删除元组元素,非法
del test # 删除整个元组
print (tuple) # 输出完整元组
print (tuple[0]) # 输出元组的第一个元素
print (tuple[1:3]) # 输出从第二个元素开始到第三个元素
print (tuple[2:]) # 输出从第三个元素开始的所有元素
print (tinytuple * 2) # 输出两次元组
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 中支持更加优化的序列化 |