Tuple(元组)
@本质:是一种有序集合
特点:
- 与list非常类似
- 是不可变的数据
- 使用()创建
一、元组的创建
格式: 元组名 = (元素1,元素2,…..,元素n)
# 1、创建空元组
tuple1 = ()
print(type(tuple1)) # <class 'tuple'>
# 2、创建带有多个元素的元组
tuple2 = (1, 2)
print(tuple2) # (1,2)
# 3、元组中的数据类型可以是不同的数据类型
tuple3 = (1, "2")
print(tuple3) # (1,"2")
# 4、创建只有一个元素的元组
tuple4 = (10)
print(type(tuple4)) # <class 'int'>
'''
注意:
这种写法定义的不是tuple,而是10这个数
这是因为()既可以表示tuple,又可以表示数学中的小括号,这样写系统产生了歧义
'''
# 只有一个元素的元组,在定义时,元素后面加一个逗号,来消除歧义
tuple5 = (10,)
print(type(tuple5)) # <class 'tuple'>
二、元组访问
@格式: 元组名[下标] 下标从0开始,不能越界
- 获取最后一个元素 tuple[-1]
tuple1 = (1,23,4)
print(tuple1[-1]) # 4
三、元组的操作
# 1、元组的连接 +
tuple1 = (1, 2, 3)
tuple2 = (5, 6, 7)
tuple3 = tuple1 + tuple2
print(tuple3) # (1, 2, 3, 5, 6, 7)
# 2、 元组的重复 *
tuple4 = (1, 2, 34)
print(tuple4 * 3) # (1, 2, 34, 1, 2, 34, 1, 2, 34)
# 3、判断元组里面是否有某个元素 in
print(1 in tuple4) # True
print(100 in tuple4) # False
# 4、 元组的截取
# 格式:元组名[开始下标:结束下标]
tuple5 = (1, 2, 3, 4, 5, 6, 7, 8)
print(tuple5[2:6]) # (3, 4, 5, 6)
print(tuple5[2:]) # (3, 4, 5, 6, 7, 8)
print(tuple5[:3]) # (1, 2, 3)
# 5、 修改元组中的某个数据(元组是不可变的)
tuple6 = (1, 23, 4, 55)
# tuple6[2] = 12123 #TypeError: 'tuple' object does not support item assignment
tuple7 = (1, 2, 4, [1, 2, 4])
tuple7[3][0] = 5
print(tuple7) # (1, 2, 4, [5, 2, 4])
'''
注意:
1、表面上看,tuple的元素确实变了,但变的不是tuple的元素,而是list的元素
2、tuple原来指向的list的内存地址并没有变成其他list的内存地址
3、所以,tuple所谓的是不可变数据,是指tuple的每个元素的指向永远不变
但list这个数据本身包含的元素是可变的
'''
四、元组的方法
# 1、len() 获取元组的元素个数
# 2、max()返回元组中的最大值
# min()返回元组中的最小值
# 3、元组的遍历
tuple1 = (1, 3, 2, 3)
for i in tuple1:
print(i) # 1 3 2 3
# 4、删除元组 del() 将整个元组变量删除
# list ---> pop() remove() clear() 元组不可变没有这些方法
del tuple1
# print(tuple1) # NameError: name 'tuple1' is not defined