前言
本文主要对Python中的元组、列表、字典、集合进行小结,主要内容包括知识点回顾、异同点、使用场景。
文章目录
一、知识点回顾
Python 中的元组、列表、字典、集合都是用来存储多个数据元素的容器类型。
1、列表(List)
列表是可变的,可以通过索引访问和修改元素,以逗号分隔值用方括号 [] 括起来实现。列表中的元素可以是不同数据类型的,可以通过追加、插入、删除等操作进行修改。常见的操作如下:
my_list = [1, 'hello', True]
my_list[0] = 2 #索引修改
my_list.append('world') #追加
my_list.insert(1, 'goodbye') #在制定位置之前插入
my_list.remove('hello') #删除制定值的元素,也可以是指定下标
print(my_list)
输出结果:
[2, 'goodbye', True, 'world']
2、 元组(Tuple)
元组是不可变的,可以通过索引访问元素,其值用逗号分隔值用小括号 () 实现。元组元素不能更改,因此在创建后不能添加、删除或修改。常见的操作如下:
my_tuple = (1, 'hello', True)
print(my_tuple[1]) #索引
print(my_tuple[0:2]) #切片
输出结果:
hello
(1, 'hello')
3、 字典(Dictionary)
字典是一个使用键-值对存储的可变数据类型,用大括号 {} 括起来,键值对之间用冒号 : 分隔,键值对之间用逗号分隔。常见的操作如下:
my_dict = {'a': 1, 'b': 2, 'c': 3}
print(my_dict['b']) #通过键来访问值
my_dict['a'] = 9 #通过键来修改值
print(my_dict)
输出结果:
2
{'a': 9, 'b': 2, 'c': 3}
4.、集合(Set)
集合是用于保存一组唯一元素的容器类型,用大括号 {} 或 set() 构造,不支持索引操作。集合中的元素不重复,可以进行交、并、差等集合操作。常见的操作如下:
my_set1 = {1, 2, 3}
my_set2 = {3, 4, 5}
print(my_set1 & my_set2) #求交集
print(my_set1 | my_set2) #求并集
print(my_set1 - my_set2) #求差集
print(my_set1 ^ my_set2) #求对称差集
输出结果:
{3}
{1, 2, 3, 4, 5}
{1, 2}
{1, 2, 4, 5}
二、异同点
1、异构性
元组、列表、字典都可以包含不同类型的元素,比如整数、浮点数、字符串等。集合要求元素类型必须是不可变的,否则会引发 TypeError 错误,如:
my_list = [1, 1.5, 'hello', (1, 2, 3), [4, 5, 6]]
my_tuple = (1, 1.5, 'hello', (1, 2, 3), [4, 5, 6])
my_dict = {'a': 1, 'b': 1.5, 'c': 'hello','d':(1, 2, 3),'e':[4, 5, 6]}
my_set = {1, 1.5, 'hello', (1, 2, 3), frozenset([4, 5, 6]) }
# my_set = {1, 1.5, 'hello', (1, 2, 3), [4, 5, 6] } #会报错,必须要用frozenset()函数将数据类型转换为不可变数据类型
print(my_list)
print(my_tuple)
print(my_dict)
print(my_set)
输出结果:
[1, 1.5, 'hello', (1, 2, 3), [4, 5, 6]]
(1, 1.5, 'hello', (1, 2, 3), [4, 5, 6])
{'a': 1, 'b': 1.5, 'c': 'hello', 'd': (1, 2, 3), 'e': [4, 5, 6]}
{1, 1.5, (1, 2, 3), 'hello', frozenset({4, 5, 6})}
集合内部使用哈希表来实现,每一个不同的数据元素都有一个唯一的哈希值,通过哈希值来对集合元素进行快速的查找和操作。由于哈希表的实现方式是通过键(key)来实现的,因此要求集合中的元素必须是可散列的,即每个元素必须有一个唯一的哈希值,否则将会引发 TypeError 错误。
2、可变性
可变性是指容器中的元素是否可以被修改,比如增加、修改、删除等。元组是不可变数据类型,列表、字典、集合都是可变数据类型,如:
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
my_dict = {'a': 1, 'b': 2, 'c': 2}
my_set = {1, 2, 3 }
my_list.append(4)
my_dict['d'] = 4
my_set.add(4)
#my_tuple 元组中的数据是不可变的
print(my_list)
print(my_dict)
print(my_set)
输出结果:
[1, 2, 3, 4]
{'a': 1, 'b': 2, 'c': 2, 'd': 4}
{1, 2, 3, 4}
3、有序性
元组、列表都是有序的,可以通过索引下标来访问元素,字典在python3.7版本以上的输出顺序通常是稳定,但是我们不能认为它是有序的,它不可以通过下标来索引,但是可以通过键来访问或修改,集合是无序的数据类型,不支持索引,如:
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
my_dict = {'a': 1, 'b': 2, 'c': 2}
my_set = {1, 2, 3 }
print(my_list[1])
print(my_tuple[1])
print(my_dict['b'])
#print(my_set[1]) #会引发 TypeError 错误
输出结果:
2
2
2
4、可迭代性
元组、列表、字典、集合都是支持遍历的。
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
my_dict = {'a': 1, 'b': 2, 'c': 2}
my_set = {1, 2, 3 }
print('my_list遍历输出:', end='')
for i in my_list:
print(i ,' ' , end='')
print()
print('my_tuple遍历输出:', end='')
for i in my_tuple:
print(i ,' ' , end='')
print()
print('my_dict遍历输出:', end='')
for i in my_tuple:
print(i ,' ' , end='')
print()
print('my_set遍历输出:', end='')
for i in my_tuple:
print(i ,' ' , end='')
print()
输出结果:
my_list遍历输出:1 2 3
my_tuple遍历输出:1 2 3
my_dict遍历输出:1 2 3
my_set遍历输出:1 2 3
三、使用场景
1、列表(List)
列表是可变、异构、有序的多元素类型容器,列表在Python中使用非常广泛,常见的使用场景包括:
1)存储有序序列数据,如待处理的任务列表、音乐播放列表等;
2) 作为其他数据结构的底层实现,如队列、堆栈等;
3)存储一组同类型的数据,如学生的成绩列表、历史行情数据列表等。
2、元组(Tuple)
元组是不可变的,因此常见的场景包括:
1)存储一组常量数据或常量配置项;
2) 作为字典的键;
3)作为函数的参数和返回值。
3、字典(Dictionary)
字典是可变、异构的多元素类型容器,字典在Python中也是非常常用的数据结构,常见的使用场景包括:
1) 存储关联关系数据,如学生的成绩记录、词典等;
2)存储对象的属性和属性值,如JSON、YAML等数据格式;
3)作为配置文件的存储格式。
4、集合(Set)
集合是用于存储一组唯一元素的数据结构,因此常见的使用场景包括:
1)去除重复元素,如活动报名时的重复报名检查;
2)求两个列表或数据之间的交、并、差等操作;
3)存储不重复的数据,如爬虫任务队列中URL的去重等。