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
posted @ 2020-08-15 19:06  AShine^_^  阅读(98)  评论(0编辑  收藏  举报