'''
元组的介绍与列表之间的区别
'''
li = [1,2,3,4,5,6]
li[0] = 100 #可改 [100, 2, 3, 4, 5, 6]
print(li)
tu = (1,2,3,4,5,6)
print(tu[0])
tu[0] = 100 #不可改,但是元组里面放个列表是可以改 TypeError: 'tuple' object does not support item assignment
print(tu)
'''
元组的创建
'''
# tu =() # 空元组
# print(type(tu)) # <class 'tuple'>
# tu = (1, 2, 3, 4, 5, 6)
# print(tu, type(tu))
#
# tu2 = tuple()
# print(tu2, type(tu2)) # () <class 'tuple'>
tu3 = tuple("123") #tuple TypeError: 'int' object is not iterable
# # 能一个一个取出对象中的元素
print(tu3,type(tu3)) # ('1', '2', '3') <class 'tuple'>
tu4 = ("123")
print(tu4,type(tu4)) # 123 <class 'str'>
tu5 = ("123",) # 加了,之后就会被看成一个元组
print(tu4,type(tu5)) # 123 <class 'tuple'>
'''
元组与列表的相同操作
'''
# 1 访问元组中的元素
tu1 = tuple("1234")
# print(tu1, type(tu1))
# print(tu1[2]) #3 同样可以进行索引
#
# # 切片
# print(tu1[0:3]) # 满足左闭右开 ('1', '2', '3')
# 反转 reversed 排序 sorted
tu2 = (1, 2, 3, 5, 4, 6, 7)
# tu2.reverse() # 与列表不同,元组反转有他自己的格式 AttributeError: 'tuple' object has no attribute 'reverse'
# print(tu2,type(tu2)) # (1, 2, 3, 5, 4, 6, 7) <class 'tuple'>
print(list(reversed(tu2))) # 也可以转换成列表
# print(tuple(reversed(tu2))) # 正确 <reversed object at 0x000001DFE2A0A348>
# tuple将这个对象进行类型转换变成元组然后打印的 (7, 6, 4, 5, 3, 2, 1)
# 默认升序
# print(sorted(tu2)) # [1, 2, 3, 4, 5, 6, 7] 返回的是列表
# # 降序
# print(sorted(tu2,reverse=True)) # [7, 6, 5, 4, 3, 2, 1] 返回的是列表
# 列表的反转/排序方法对比
# li = [1, 2, 3, 5, 4, 6, 7]
# li.reverse()
# print(li)
# li.sort()
# print(li)
# 加法与乘法
tu1 = (1, 2, 3)
tu2 = (4, 5, 6)
print(tu1 + tu2) # 合并 (1, 2, 3, 4, 5, 6)
print(tu1 * 3) # 打印三个接在一起的元组tu2 (1, 2, 3, 1, 2, 3, 1, 2, 3)
'''
元组中不允许的操作
'''
# 不允许修改
# tu = (1, 2, 3, 4, 5, 6)
# print(tu[0])
# tu[0] = 100 # TypeError: 'tuple' object does not support item assignment
# print(tu)
# 元组是不能进行修改的 但是可以对元组中可以修改的数据类型进行修改
tu2 = (1, 2, 3, ['yueyue', 18])
# print(tu2[-1])
# # 想将18修改为 25
# tu2[3][1] = 20
# print(tu2)
# 删除
tu3 = (1, 2, 3, 4, 5)
# 不能删除元组中的单个元素
del tu3[3] # TypeError: 'tuple' object doesn't support item deletion
print(tu3)
# 但是我能删除整个元组
del tu3
# 说明我们的tu3成功被删除
# print(tu3) # NameError: name 'tu3' is not defined
'''
元组与列表之间的转换
'''
# list --->tuple
li = [1,2,3,4]
print(tuple(li)) # (1, 2, 3, 4)
# tuple---->list
tu2 = (1, 2, 3, 4)
print(list(tu2)) # [1, 2, 3, 4]
'''
str<----> int
int<----->float
list<----->tuple
在其前面加上你想转换的关键字即可
字符串 "" ''
列表 []
元组 ()
'''