02 基本数据类之元组类型及其内置方法
一、作用
- 元组就是不可变的列表。按照索引位置存放多个值,只用来读,不用来改。
-
在同等数据类型下,使用元组更加节简空间,效率要高于列表,因为元组底层只提供读的机制,而列表即要有读的机制,还要有该的机制。虽然这种效率的影响不太,但是本着效率更高的态度,我们这个时候就应该用元组类型。
二、定义
-
定义:()内用逗号分隔开多个任意类型的元素。
-
定义需注意: 单独一个括号,只代表包含的意思。如果你定义的元组中,只有一个元素,必须用逗号分隔开。
-
元组的不可变到底是什么不可变?元组不可变,指的是第一层内元素的内存地址,不能被改变。如果第一层内嵌套了可变的容器类型,例如:列表。那么这个列表本身容器地址不可改变,而该列表中的值可以被改变。
# 1、定义
t = (1, 1.3, 'aa') # t=tuple((1,1.3,'aa'))
print(t, type(t))
# 2、定义注意:单独一个括号代表包含的意思
x = (10)
print(x, type(x))
# 3、单个值的定义:如果元组中只有一个元素,必须加逗号
t = (10,)
print(t, type(t))
# 4、元组的不可变到底是什么不可变
# 4.1 元组不可变,指的是第一层内元素的内存地址,不能被改变
t = (1, 1.3, 'aa') # t=(0->值1的内存地址,1->值1.3的内存地址,2->值'aa'的内存地址,)
# t[0] = 11111
# 4.2 如果第一层内嵌套了可变的容器类型,例如:列表。那么这个列表本身容器地址不可改变,而该列表中的值可以被改变。
t = (1, [11, 22]) # t=(0->值1的内存地址,1->值[11,22]的内存地址,)
print(id(t[0]), id(t[1]), id(t[1][0])) # 140703318001312 3142440721856 140703318001632
# t[0]=111111111 # 不能改
# t[1]=222222222 # 不能改
t[1][0] = 11111111111111111 # 可以改
print(t) # (1, [11111111111111111, 22]),元组中的列表的第一个值发生了改变
print(id(t[0]), id(t[1]), id(t[1][0])) # 140703318001312 3142440721856 3142440159792(该id发生了改变)
三、类型转换
# 字符串转元组
print(tuple('hello')) # ('h', 'e', 'l', 'l', 'o')
# 列表转元组
print(tuple([1, 2, 3])) # (1, 2, 3)
# 字典转元组
print(tuple({'a1': 111, 'a2': 333})) # ('a1', 'a2')
三、使用:内置方法