元组是不可改变的序列,同list一样,元组是可以存放任意类型的容器
元组的表示方法
- 创建空元组
t = () # 用括号创建空元组 t_1 = tuple() # 用tuple创建空列表
- 创建非空元组, 单个元素用()创建时,元素后面加逗号(,)区分单个对象还是元组
t = (1, ) # 注意,单个元素必须加(,), 如果不加,会直接绑定元素 print(t) # 输出结果为:(1,) t_2 = (1) # 这个是错误用法,忘记逗号时不会触发报错跟异常,t_2会直接绑定元素 print(t_2) # 输出结果为: 1 t_3 = 666, # 括号可以省略,单个元素时,元素后面的(,)一定不可以省略 print(t_3) # 输出结果为: (666,) t_4 = (1, 2, 3) # 多个元素时,可以省略末尾的逗号 print(t_4) # 输出结果为:(1, 2, 3) t_5 = 100, 200, 300 print(t_5) # 输出结果为:(100, 200, 300)
- 元组的构造(创建)函数 tuple
tuple() 生成一个空的元组,等同于()
tuple(iterable) 用可迭代对象生成一个元组t = tuple([1, 2, 3, "PyGo学习笔记"]) print(t) # (1, 2, 3, 'PyGo学习笔记') t_1 = tuple(i for i in range(5)) print(t_1) # (0, 1, 2, 3, 4)
元组的运算
- + 加号用于元组的拼接操作
t = (1, 2, 3) + (4, 5, 6) # t = (1, 2, 3, 4, 5, 6)
- * 乘号 用于用原元组生成重复的元组
t = (1, 2) * 3 # t = (1, 2, 1, 2, 1, 2)
- += 加等号
t = (1, 2, 3) t += (4, 5, 6) print(t) # t = (1, 2, 3, 4, 5, 6)
- *= 乘等号
t = (1, 2, 3) t *= 2 print(t) # t = (1, 2, 3, 1, 2, 3)
元组的比较运算 t1 = 1, 2, 3
, t2 = 4, 5, 6
- > 大于
print(t1 > t2) # False
- >= 大于等于
print(t1 >= t2) # False
- < 小于
print(t1 < t2) # True
- <= 小于等于
print(t1 <= t2) # True
- == 等等
print(t1 == t2) # False
- != 不等于
print(t1 != t2) # True
in / not in 运算符
- in 元素是否存在元组中
print(2 in (1, 2, 3, 4)) # True
- not in 元素是否不在元组中
print('2' not in (1, 2, 3, 4)) # True
索引和切片
- 索引 元组[整数]
t = (1, 2, 3) print(t[0]) # 1 print(t[1]) # 2
- 切片 元组[整数:整数] 或者 元组[整数:整数:整数] 元组不支持索引赋值和切片赋值
t = tuple(range(10)) print(t[: 5]) # (0, 1, 2, 3, 4) print(t[1: 5]) # (1, 2, 3, 4) print(t[::-1]) # (9, 8, 7, 6, 5, 4, 3, 2, 1, 0) print(t[::3]) # (0, 3, 6, 9)
元组的方法
- T.index(v[, begin[, end]]) 返回对应元素的首次出现索引下标,begin为开始索引,end为结束索引,元素不存在时触发ValueErorr错误
t = (1, 2, 3, 4, 5, 1, 6) t.index(1) # 输出0, 1 第一次出现在第一个位置,所有只会输出 0 t.index(1, 3) # 输出 5, 第四个元素开始起算, 1出现第六个位置,所以输出 5 t.index(1, 2, 4) # 触发ValueError: tuple.index(x): x not in tuple异常, 因为第三个到第五个元素中没有 1
- T.count(x) 返回元组中对应元素的个数
t = (1, 2, 3, 4, 5, 1, 6) t.count(1) # 输出 2 t.count(666) # 输出 0