元组
元组和列表相似,但元组属于不可变序列,所以元组:
- 不能修改元素的值
- 元组用()表示
1.创建元组
t1 = () #创建一个空元组
#或者
t1 = tuple() #空元组
t2 = (1,) #创建带有一个元素的元组,后面的逗号是必须的,否则无法区分是()表达式还是元组
或者:t2 = 1,
t3 = (1,4,True,'hello')
t4 = 10,20,30 #t4 = (10,20,30)
t5 = tuple('abc')
2. 成员访问
t1 = (10,7,12,23)
print(t1[0])
#print(t1[4]) 下标越界 IndexError
t2 = (1,2,[4,5])
t2[2][0] = 10 #元组的元素无法修改,但元素如果是可变列表,则列表元素是可以修改的
3 通用操作
#1.连接
t1 = (1,2,3)
t2 = (4,5,6)
t3 = t1 + t2
print(t3) #(1,2,3,4,5,6)
#2.重复
print(t1 * 2) #(1,2,3,1,2,3)
#3.切片
print(t3[0:3]) #(1,2,3)
print(t3[3:]) #(4,5,6)
print(t3[-1::-1]) (6,5,4,3,2,1)
#4.成员运算符
print(3 in t3) #True
print(2 not in t3) #False
#5.元素个数
print(len(t3))
#6.最值
print(max(t3)) #6
print(min(t3)) #1
4 元组其它操作
- 元组和列表的转换
t1 = (10,20,30)
l1 = [1,2,3]
#列表转元组
print(tuple(l1))
#元组转列表
print(list(t1))
- 查找
t1 = (10,20,30,10)
print(t1.index(20)) #查找值等于20的第一个元素
print(t1.count(10)) #返回元组中10的个数
- 遍历
t1 = (10,20,30,10)
for value in t1:
print(value)
#同时获取下标和值
for index,value in enumerate(t1):
print(index, value)
#通过下标遍历
for i in range(len(t1)):
print(t1[i])
1.5 二维元组
t1 = ((1,2,3),(4,5,6))
#遍历
for elem in t1:
for value in elem:
print(value, end = ' ')
print('')
1.6 序列的解包
#元组解包
#变量个数和元素个数一致
t1 = (11,20)
a, b = t1
print(a,b) #11 20
a, b = 2, 3
a,b,c = (1,2,3)
#变量个数和元素个数不同
#a=10,c=50,_获取(20,30)
a, *_, c = 10,20,30,50
print(a,c,_) #10 50 [20, 30]
#a=10,b=20,c获得剩余的元素
a, b, *c = 10,20,30,50
print(a,b,c) #10 20 [30, 50]
#*解包
print(*(1,2,3)) # 1 2 3
#range解包
a, b, c = range(3) #a=0,b=1,c=2
#列表解包
a,*_b,c = [1,2,3,4,5]
print(a,_b,c) # 1 [2, 3, 4] 5
#字符串解包
a,b,c = '123'
print(a,b,c) # a='1',b='2',c='3'