Day_06_PM_Tuple
# 元组: tuple (不能修改)
# 就是一个不可以更改的列表
# 1.创建元组
t = () # 空元组
# t = (1) # 不加逗号变int => 1 <class 'type'>
t = (1,) # 包含一个元素的元组
t = (1, 2, 3, "hello", True)
print(t, type(t))
# 2.下标
t = (11, 22, 33, 44)
print(t[0], t[1], t[2], t[3]) # 元组和列表都是中括号取下标不是圆括号
print(t[-1]) # 最后一个元素
# 3.合并
print((1, 2) + (3, 4)) # 得到了一个新的元组 (1, 2, 3, 4)
# 4.重复
print((1, 2, 3) * 3) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
# 5.长度
print(len(t)) # 4
# 6.成员
print(33 in t) # True
# 7.切片
t = (1, 2, 3, 4, 5, 6)
print(t[2:5]) # (3, 4, 5)
print(t[::-1]) # (6, 5, 4, 3, 2, 1)
# 8.遍历
t = (11, 22, 33)
for n in t:
print(n) # n是元素
for i in range(len(t)):
print(i) # 下标
for i, n in enumerate(t):
print(i, n) # 下标和元素
# 其他功能
# 增删改查
t = (11, 22, 33)
# t[0] = 9 # 报错, 不能修改
# 排序 (不能改变原来的,sorted可以)
t = (3, 2, 7, 1, 9)
t2 = sorted(t) # 升序 [1, 2, 3, 7, 9] (得到/返回一个列表不过没关系一样的,列表更好)
t2 = sorted(t, reverse=True) # 降序(切片也可以但不能用sort和reverse) [9, 7, 3, 2, 1]
t = (3, 2, 7, 1, 9)
t2 = reversed(t) # 返回的是一个对象,需要强转 <reversed object at 0x0000000002612278>
# print(t2)
print(list(t2))
# 列表和元组的转换
print(list((1, 2, 3))) # [1, 2, 3]
print(tuple([1, 2, 3])) # (1, 2, 3)
# 元组列表可以快速取值
x, y = (2, 3) # 2 3
x, y = [2, 3] # 2 3
print(x, y)
# 元组中有列表(列表可以改)
t = (1, 2, [3, 4])
# t[-1] = 0 不行
t[-1][0] = 0 # (1, 2, [0, 4])
print(t)