前言
本篇是元组的知识点学习以及知识点的补充
元组
概念
不可变的列表,叫做元组。
在之前列表的特性中,我们就说过列表是可变的,但是在实际使用过程中,我们有时候仍然需要一系列不可变的元素,这个时候就需要元组出场了。
定义
元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。
dimensions = (2024, 6,14)
print(dimensions)
注意:元组可以看出特殊的列表,但是元组的元素是不可变的。之前讲过集合,集合的元素也是不可变的,同理,元组的元素没有办法可以修改。
增
元组元素是不可变的,没有增这一概念。只能通过将当前变量赋值一个更多元素的元组来实现一个类似于增加元素的操作。
tup = (1, 2, 3)
# 注意,单个元素后面有一个逗号,使其成为元组
new_tup = tup + (4,)
tup = new_tup
print(tup)
删
同增,元组的元素没有删的概念,只能模拟实现类似的操作。
改
同增,元组的元素没有增的概念,只能模拟实现类似的操作。
查
元组元素的查询,主要使用索引的方式,当然也可以使用切片的方式。还有其他复杂的方式,入门的话只讲这两个。
索引方式
tup = (0, 1, 2, 3)
print(tup[0])tup = (0, 1, 2, 3, 4)
# 获取索引1到3的元素,不包括4
subset = tup[1:4]
print(subset)
元组的知识入门就知道这些就行,记住元组是不可变的列表就好了。
补充知识
索引
这里索引单指列表,元组的索引。
很多时候索引有被叫做下标。
这里特别再讲一遍的原因是因为,索引是从0开始,0就是元组中的第一个元素。在大多数编程语言中都是如此,这与列表操作的底层实现相关。
当你使用索引去获取元素的值的时候,注意索引的值必须小于容器本身元素的数量,不然会报错的,不信可以试试。
- 正向索引。简单而言就是从0开始的索引。从容器头部开始计算,0是第一个,1是第二个,以此类推。
- 反向索引。简单来说就是从-1开始的索引。从容器尾部开始计算,-1是倒数第一个,-2是倒数第二个,依次类推。
tup = (1, 2, 3, 4)
print(tup[0])
print(tup[1])
print(tup[2])
print(tup[3])
print(tup[-1])
print(tup[-2])
print(tup[-3])
print(tup[-4])
大家可以试试这个,我这里不贴结果
tup = (1, 2, 3, 4)
print(tup[4])
print(tup[-5])
排序
列表的排序
列表的排序有两种方法,一个是使用sorted()函数排序,这种排序不会改变原有的列表元素顺序。另一种是使用列表的内置函数sort(),这种排序是直接操作原列表,所以会改变原列表元素的顺序。
单独讲一个反转列表的内置函数,防止大家不认识和错误使用。
my_list = [5, 1, 3, 4, 2]
print("最开始的my_list: ", my_list)
new_list = sorted(my_list)
print("sorted函数排序", new_list)
print("sorted函数排序后的my_list: ", my_list)
# 正序
my_list.sort()
print("sort()函数排序后的my_list:", my_list)
# 倒序
my_list.sort(reverse=True)
print("sort()函数排序后的my_list: ", my_list)
# 新的my_list
my_list = [5, 1, 3, 4, 2]
print("最开始的my_list: ", my_list)
# 反转列表,不是排序
my_list.reverse()
print("反转后的my_list: ", my_list)
大家好好观察一下每次的输出,了解这几个方法的差异。
集合的排序
集合本身是无序的,不支持保留插入的顺序,也不支持直接排序,但你可以将其转换为列表后进行排序,或者使用sorted()函数对集合元素进行排序,得到一个新的排序后的列表,最后给集合赋值,达到一个模拟的效果。
长度
有时候我们需要知道容器的长度(元素的数量),该怎么办呢?可以使用len()函数实现。
my_list = [1, 2, 3, 4, 5]
length = len(my_list)
print("列表长度:", length)my_tuple = (1, 2, 3, 4, 5)
length = len(my_tuple)
print("元组长度:", length)my_set = {1, 2, 3, 4, 5}
length = len(my_set)
print("集合长度:", length)my_dict = {'a': 1, 'b': 2, 'c': 3}
length = len(my_dict)
print("字典长度:", length)
作业
元组的排序。