Python 数据结构详解:列表、字典、元组与集合对比
本文系统对比 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中的数据结构比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持! 如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









