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]
'''