Python3 元组、列表、字典、集合小结

前言

本文主要对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的去重等。

  • 32
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林时小卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值