042❤元组类型内置方法
一、元组(tuple)
元组是不可变的列表,即元组的值不可更改,因此元组一般只用于只存不取的需求。也因此元组可以被列表取代掉,所以元组相比较列表使用的很少。元组相比较列表的优点为:列表的值修改后,列表的结构将会发生改变,而元组只需要存储,因此列表在某种程度上而言需要占用更多的内存。但是目前工业上内存已经不是问题了,所以工业上元组一般不会使用。
1.1 用途
存储多个装备、多个爱好、多门课程等
1.2 定义
在()
内可以有多个任意类型的值,逗号分隔元素
my_teacher = ('nick','jason', 'tank', 'sean')
print(f"my_teacher: {my_teacher}")
# my_teacher: ('nick', 'jason', 'tank', 'sean')
name_str = ('lwx') # ()只是普通包含的意思
name_tuple1 = ('lwx','hanye')
name_tuple = ('lwx',) # 只有一个元素,最后要加上逗号
print(f"type(name_str): {type(name_str)}")
print(f"type(name_tuple): {type(name_tuple1)}")
print(f"type(name_tuple): {type(name_tuple)}")
#type(name_str): <class 'str'>
# type(name_tuple): <class 'tuple'>
# type(name_tuple): <class 'tuple'>
1.3 类型转换
print(tuple('aaa'))
print(tuple([1,2,3,4]))
print(tuple({'name':'lwx'}))
# ('a', 'a', 'a')
# (1, 2, 3, 4)
# ('name',)
二、元组的内置方法
2.1 优先掌握
2.1.1 按索引取值
name = ('lwx','hanye','forever')
print(name[0])
print(name[0:2])
# lwx
# ('lwx', 'hanye')
2.1.2 切片
name = ('lwx','hanye','forever','happiness','enjoying') #(顾头不顾尾,步长)
print(name[0:4:2])
# ('lwx', 'forever')
2.1.3 长度 len
name = ('lwx','hanye','forever','happiness','enjoying')
print(len(name))
# 5
2.1.4 成员运算 in /not in
name = ('lwx','hanye','forever','happiness','enjoying')
print('lwx' in name)
# True
2.1.5 循环
name = ('lwx','hanye','forever','happiness','enjoying')
for name in name :
print(name)
# lwx
# hanye
# forever
# happiness
# enjoying
2.1.6 计数 count
name = ('lwx','hanye','forever','hanye','happiness','lwx','enjoying')
print(name.count('lwx'))
print(name.count('hanye'))
# 2
# 2
2.1.7 索引 index()
name = ('lwx','hanye','forever','hanye','happiness','lwx','enjoying')
print(name.index('happiness'))
print(name.index('hanye'))
# 4
# 1
2.2 存一个值or多个值
多个值
2.3 有序or无序
有序,可以按照索引取值
2.4 可变还是不可变
元组一旦定义就不可以进行修改,所以是不可变数据类型
三、元组和列表的区别
name = ['lwx','hanye','forever','hanye','happiness','lwx','enjoying']
print(id(name[6]))
name[6] = 'happy'
print(id(name[6]))
# 90515040
# 90441856
列表可变的原因:索引对应的值的内存地址是可以改变的
元组不可变得原因:索引所对应的值的内存地址是不可以改变的,或者反过来说,只要索引对应值的内存地址没有改变,那么元组是始终没有改变的。
#我们可以对元组内部的可变类型进行修改
name = (['lwx','hanyhe'],'forever','happiness')
print(f'id(name[0]:{id(name[0])}')
print(f'id(name[0]:{id(name[1])}')
print(f'id(name[0]:{id(name[2])}')
print('****************************************************')
name[0][0]='luowenxiang'
print(name)
print(f'id(name[0]:{id(name[0])}')
# id(name[0]:56571384
# id(name[0]:85920000
# id(name[0]:56911296
# ****************************************************
# (['luowenxiang', 'hanyhe'], 'forever', 'happiness')
# id(name[0]:56571384