1:元组的定义及特性
元组: 俗称不可变的列表,又被成为只读列表,元组是一种不可变数据类型,元组也是python的基本数据类型之一, 用小括号()括起来(也可以不要括号),使用逗号分隔,里面可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能改。
元组具有如下特性:
a:任意对象的有序集合,它固定长度,能够任意嵌套。
b:可通过偏移访问。
C:属于“不可变系列”的分类。
D:元组是对象引用数组
2:常用元组字面量及操作
2.1常用元组字面量及操作汇总
操作 | 说明 | 示例 | 结果 |
() | 空元组 |
|
|
T=(1,) | 单个元素的元组(单个元素后面需要逗号) | t = (0,) print(t,type(t)) t = 1, print(t,type(t)) | (0,) <class 'tuple'> (1,) <class 'tuple'> |
T=(1,2.3,3,’hello’) | 4个元素的元组 |
|
|
T=1,2.3,3,’hello’ | 4个元素的元组(与带括号的一样) |
|
|
T=(1,2,(3,4)) | 元组嵌套 |
|
|
T=tuple(‘ixusy88’) | 一个可迭代对象的元素组成的元组 | t = tuple('123') print(t,type(t))
t = tuple(['123']) print(t,type(t))
# 传入字典时,迭代取的是key值 t = tuple({'123':'abc'}) print(t,type(t)) | ('1', '2', '3') <class 'tuple'> ('123',) <class 'tuple'> ('123',) <class 'tuple'> |
T[i] | 索引 |
|
|
T[i][j] | 索引的索引 |
|
|
T[i:j] | 分片(与字符串,列表操作一样) |
|
|
len(T) | 长度(只统计顶层的,不计算嵌套中的子元素) | t=(1,2,3,(4,5,6,),) print('t=',t,' len(t)=',len(t)) | t= (1, 2, 3, (4, 5, 6)) len(t)= 4 |
T1+T2 | 拼接 | t1 = (1,2,3) t2 = (3,4,5) print(t1+t2) | (1, 2, 3, 3, 4, 5) |
T*3 | 重复 | t=(1,2,3,) print(t*3) | (1, 2, 3, 1, 2, 3, 1, 2, 3) |
for x in T:print(x) | 迭代 | t=(1,2,(3,4),5) for x in t: print(x) | 1 2 (3, 4) 5 |
‘123’ in T | 成员关系测试 | t=('0123',1,2,(3,4),5) if '123' in t: print("'123' in t") else: print("'123' not in t") | '123' not in t |
T.index(‘123’) | 元素在元组中的索引(元素需要在这个元组中存在,不然会报错) | t=(1,2,3,(3,4),5,3) print(t.index(3)) | 2 |
T.count(‘123’) | 元素出现的次数(顶层中的元素) | t=(1,2,3,(3,4),5,3) print(t.count(3)) | 2 |
3:元组的索引与切片:
元组也是一种系列数据类型,像列表一样可以通过索引与切片来访问它,但是不能对元组进行修改。
3.1:元组索引:
t=(1,2,3)
print(t)
print('索引为正数:')
print(t[0])
print(t[1])
print(t[2])
#print(t[3]) #会报错
print('索引为负数:')
print(t[-1])
print(t[-2])
print(t[-3])
'''
(1, 2, 3)
索引为正数:
1
2
3
索引为负数:
3
2
1
'''
3.2:元组切片
t=(1,2,3,4,5,6,7)
print('t=',t)
print('t[::2]=',t[::2])
print('t[1:5]=',t[1:5])
print('t[1:5:2]=',t[1:5:2])
print('t[::-1]=',t[::-1])
print('t[-1:3:-1]=',t[-1:3:-1])
print('t[-1:-4:-1]=',t[-1:-4:-1])
"""
t= (1, 2, 3, 4, 5, 6, 7)
t[::2]= (1, 3, 5, 7)
t[1:5]= (2, 3, 4, 5)
t[1:5:2]= (2, 4)
t[::-1]= (7, 6, 5, 4, 3, 2, 1)
t[-1:3:-1]= (7, 6, 5)
t[-1:-4:-1]= (7, 6, 5)
"""
4:元组的增删改查
元组是一种不可变的数据类型,是不可变的数据类型,因此不能对其进行增,改操作,删操作是删除整个元组:
t=(1,2,3,4)
# 删除操作
#t[0] = '99' # TypeError: 'tuple' object does not support item assignment
del t # 删除整个元组
#print(t) # 已经删除了,NameError: name 'tu' is not defined
# 没有添加元素的操作
# 没有修改操作
# 元组 的遍历
t=(1,2,3,4)
for item in t:
print(item)
for index,item in enumerate(t):
print(index,item)
另外这里的元组不可修改数据,指的是元组的顶层元素不能修改,如果元组嵌套了其他可变数据对象的话,是可以对内嵌对象修改的。
看如下代码:
t=(1,2,[3,4],5,6)
print('1---t=',t)
print('2---t[2]=',t[2])
# t[2] 是元组t内嵌的列表,不能给t[2]赋值,但t[2]是一个列表的引用(即t[2]相当于一个对象,它指向一个列表),所以修改这个被引用列表的值
# t[2] = 100 # 给t[2]赋值会报错,
t[2][0] = 77
print('3---t=',t)
print('4---t[2]=',t[2])
'''
1---t= (1, 2, [3, 4], 5, 6)
2---t[2]= [3, 4]
3---t= (1, 2, [77, 4], 5, 6)
4---t[2]= [77, 4]
'''