Python 数据结构详解:列表、字典、元组与集合对比

许南星
许南星
发布时间:2026-10-14| 5人浏览过
原创

本文系统对比 Python 中列表、字典、元组和集合四种核心数据结构。详细解析各类型的可变性、有序性及内存特性,涵盖创建、增删改查、排序及解包等常用操作,并对比其适用场景,帮助开发者根据需求选择合适的数据容器。

Python 列表(List)详解

列表是 Python 中最基础的数据结构之一,其定义语法为 list=[val1,val2]。

列表具备三个核心特征:元素可变、保持插入顺序,且支持通过索引访问。

所谓可变,指列表中的每个元素均可独立进行增加、删除、修改和查询操作,且列表元素可容纳 Python 中的任何对象类型。

创建列表主要有两种途径:

第一种是直接利用方括号 [] 进行赋值,内部包含以逗号分隔的一组值;


 newlist=[1,2,3]
  print(newlist) #[1, 2, 3]
  print(type(newlist)) #查看类型为:<class 'list'>    

第二种是通过调用 list() 构造函数来定义列表。


 tup=('q','w','e')
  print(type(tup)) #<class 'tuple'>
  change_tup=list(tup)
  print(type(change_tup))#<class 'list'> 

针对列表的添加操作,主要有以下三种方式:

使用 append 方法,可将新元素追加至列表末尾。


 change_tup.append('f')
 print(change_tup) #['q', 'w', 'e', 'f']

利用 insert 方法,可将元素插入到列表指定的索引位置。


 change_tup.insert(0,'a')
 print(change_tup) #['a', 'q', 'w', 'e', 'f']

使用 extend 方法,可将指定序列的元素依次追加到列表尾部,实现列表合并;

需要注意的是,extend 操作不会自动去除重复内容。


 addlist=['b','c','a']
 change_tup.extend(addlist)
 print(change_tup) #['a', 'e', 'f', 'b', 'c', 'a'] 

列表的删除操作包含以下几种方法:

pop 方法用于删除并返回指定索引处的元素。


 change_tup.pop(1)
 print(change_tup) #['a', 'w', 'e', 'f'] 

remove 方法根据值删除元素,它会定位并删除第一个符合要求的值。

删除操作会移除该元素在列表中的对应位置。


 change_tup.remove('w')
 print(change_tup) #['a', 'e', 'f']

del 关键字用于删除整个列表或列表中的特定数据,

del 是 Python 的内置功能,并非列表类型独有的方法。


del change_tup[-1]
 print(change_tup)#['a', 'e', 'f', 'b', 'c'] 

列表的查找操作可通过以下函数实现:

index(元素名):获取指定元素在列表中的索引值; count(元素名):统计某元素在列表中出现的次数; if 某元素 in 列表名:判断某元素是否存在于列表内。

列表的修改操作包括直接赋值和内置方法:

list[index] = value:通过索引直接修改元素值; reverse():原地反转列表顺序; sort():在原列表基础上按从小到大排序; sorted(列表名):生成一个新的已排序列表,原列表不变。

除了常规操作,列表还支持一些特殊函数:

max(列表名):返回列表中的最大值; min(列表名):返回列表中的最小值。

Python 字典(Dict)详解

字典的定义语法为 dict={key1:val1,key2:val2}
。

字典具有以下特性: 1. 字典中的值是可变的,但字典本身是无序的(Python 3.7+ 保持插入顺序,但概念上仍视为无序映射)。 2. 字典中的数据必须以键值对(key-value)的形式存在。 3. 字典中的键(key)不可重复,但值(value)可以重复。 4. 字典的键(key)必须是不可变对象,因此不可修改;而值(value)可以是任何对象,且可被修改。

字典的添加操作如下:

变量名[key]=value:通过键添加对应的值,若键已存在则覆盖原值; setdefault(key,default_value):指定键和值,若键存在则返回原值(不覆盖),若不存在则添加新键值对。

字典的删除操作包括:

pop:弹出并返回指定键对应的值; popitem:随机弹出一个键值元组,因字典无序,弹出结果不确定; clear:清空字典中的所有元素。

字典的修改操作如下:

变量名[key]=value:通过键添加或覆盖值,若键存在则覆盖; update():传入一个字典,若键相同则覆盖原值,若键不存在则添加新键值对。

字典的查找与遍历操作包括:

keys:返回包含字典所有键的视图对象; values:返回包含字典所有值的视图对象; get:以键取值,若指定键不存在,默认返回 None,也可指定默认返回值; update:以字典格式更新指定键的内容,若键不存在,则创建新键和值; items:返回字典键值对以元组形式呈现的视图对象。

Python 元组(Tuple)详解

元组的定义语法为 tuple=(val1,val2)。

元组的核心特性为: 1. 元组是不可变的,但支持通过索引查看元素。 2. 空元组记为 (),若元组仅包含一个元素,需加逗号记为 (1,)。

元组的枚举操作:

在遍历时使用 enumerate,可重新生成包含下标和元素的元组。


t=(1,2,3)
for i in enumerate(t):
 print(i)#(0, 1)(1, 2)(2, 3)

元组的查找操作如下:

index(元素名):从左往右返回第一个遇到的指定元素的索引,若未找到则报错; count(元素名):返回元组中指定元素出现的个数。

元组的典型应用场景包括:

字符串格式化时通常需要使用元组; 函数返回多个返回值时,返回的通常是元组类型; 部分内置函数的返回值也是元组类型。

Python 集合(Set)详解

集合的定义语法为 set={val1,val2}。

集合的特性如下: 1. 集合中的元素是不可变的,且集合本身是无序的。 2. 集合概念接近数学集合,每个元素都是无序、不重复的任意对象。 3. 集合不支持切片和索引,除集合运算外,集合元素可被添加和删除。

集合的添加操作:


add(elem)
update([elem]/(elem)/'elem')

集合的删除操作:


remove(elem)
discard(elem)
pop()
clear()

集合的查找操作:

in not in

集合的主要使用场景:

数据去重。

数据结构通用操作与对比

其他常用方法:

1. 查询各个数据结构的长度:

len(类型名)。

2. 判断数据类型是否可变:

可变定义:当该数据类型的变量值发生改变时,其对应的内存地址不发生变化。 可变类型:列表、字典、集合。 不可变类型:数字、字符串、元组。

3. 列表、元组和集合的解包操作:


a,*b = [1,2,3] a=1,b=2,3
*a,b = [1,2,3] a=1,2 b=3

以列表为例,其他两种类型的解包原理相同。

4. 列表和元组的合并与重复操作:


l1=[1,2]
l2=[3,4]
print(l1+l2)
print(l1*2)

总结。

以上所述是小编给大家介绍的python中的数据结构比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。