# 元祖
# 1.认识元祖
'''
元祖和列表相似,但元祖属于不可变序列,
所以元祖:
1.不能修改元素的值
2.元祖用()表示
'''
# 2.创建元祖
'''
t1 = () # 创建一个空元祖
t1 = tuple() # 空元祖
t2 = (1,) # 创建一个带有元素的元祖,后面必须有逗号,不然无法区别是表达式还是元组
t3 = (1,3,True,"hello")
t4 = 10,20,30
t5 = tuple('abc')
'''
# 3.成员访问
'''
t1 = (10,7,12)
print(t1[0]) # 下标越界报错
t2 = (1,2,[3,4])
t2[2][0] = 10 #元组的元素不能修改,但元素如果是可变列表,则列表元素是可以修改的
'''
# 4.元组操作
'''
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))
print(min(t3))
7.元组和列表转换
t1 = (10,20,30)
l1 = [1,2,3]
列表转元组
print(tuple(l1))
元组转列表
print(list(t1))
8.查找元组的元素
t1 = (10,20,30)
print(t1.index(10)) #查找等于10的第一个元素,返回该元素的下标
print(t1.count(10)) # 返回元祖中10的个数
9.遍历
t1 = (10,20,30,10)
for value in t1
print(value)
同时获得值和下标
for index,value in enumerate(t1):
print(index,value)
#通过下标遍历
for value in range(len(t1)):
print(t1[value])
# 二维元组遍历
t1 = ((1,2,3),(4,5,6))
for elem in t1:
for value in elem:
print(value)
'''
#4.元组解包
'''
变量的个数和元素的个数相同
t1 = (11,20)
a, b = t1
print(a,b)
a,b = 1,2
a,b,c = (1,2,3)
# 变量个数和元素个数不同时
t1 = [1,2,3,4]
a,*_b,c = t1
print(a,_b,c) #1 2,3 4
*解包
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]
print(a,_b,c) #1 [2,3] 4
字符串解包
a,b,c = '123'
print(a,b,c) #a='1',b='2',c='3'
'''