Python内置数据结构详解:序列与散列类型全解析

纸上星河
纸上星河
发布时间:2026-10-13| 6人浏览过
原创

本文系统梳理Python内置的序列结构与散列结构。详细解析List、Tuple、String等序列类型的创建、切片及操作方法;深入讲解Set和Dict的特性、常用方法及数学运算。涵盖从基础创建到高级应用的完整指南,助您高效处理数据。

Python数据结构概述

Python作为一种脚本语言,其语法要求强制缩进,这使得代码既易读又美观。它的数据类型支持自动转换,无需像C或Java那样显式定义变量类型,从而大幅简化了编写过程,因此广受欢迎。

如今,Python已广泛应用于数据分析、数据挖掘及机器学习等科学计算领域。鉴于科学计算对数据处理的高要求,深入理解Python原生提供的数据结构至关重要,这能帮助开发者在复杂数据操作中游刃有余。本文将对这些结构进行归纳整理,便于查阅与收藏。

Python

序列结构详解

一、序列结构

首先介绍的是序列结构。在序列中,元素的顺序至关重要,不同顺序构成的序列被视为不同的序列。Python提供了六种内建序列结构,分别是list、tuple、string、unicode、buffer和xrange。

List列表操作

1.1、list(列表)

List,即列表,是一种序列,可视为数组。与其他语言不同,Python列表中的元素可以是任意数据类型,包括数字、字符串等。

以下是创建list结构的几种常见方式:


//1.通过中括号括起已知的元素创建list 
mylist = ['orange', 'apple', 1,2,3.14]; 
//2.通过中括号创建空list,然后用append()追加动态元素 
mylist = []; 
mylist.append('orange'); 
//3.通过list()方法创建空list 
mylist = list(); 

选取list元素的方法:


//通过中括号加下对应下标选取,下标从0开始,-1为倒数第一个元素,以此类推 
mylist[0]; 
mylist[-1]; 

切片是Python序列结构独有的操作,用于从序列中提取子序列。所有序列均可切片,list作为序列自然支持此功能。切片方法如下:


//通过[begin:end]方式完成切片 
mylist = [1,2,3,4,5]; 
mylist[0:2]; //生成的序列为[1,2,3] 

list常用方法包括:

  • list.append(x),在列表末尾添加一个元素。
  • list.insert(i, x),在指定索引位置插入元素,第一个参数为索引。
  • list.remove(x),移除列表中第一个值为x的元素,若不存在则抛出异常。
  • list.clear(),删除列表中的所有元素。
  • list.index(x),返回列表中第一个值为x的元素的从零开始的索引,若不存在则抛出异常。
  • list.count(x),返回元素x在列表中出现的次数。
  • list.reverse(),反转列表中的元素顺序。

机器学习

Tuple元组特性

1.2、tuple(元组)

Tuple,即元组,同样可视为数组,元素可以是任意数据类型,甚至支持嵌套。与列表的主要区别在于,元组一旦创建便不可修改,也无法追加元素。元组使用小括号创建,同样支持切片,切片方法与list相同。


//1.通过小括号括起已知的元素创建tuple 
mytuple = (1, 3, 'hello!') 
//2.不可以用append()往tuple追加,因为tuple一旦创建,不可变更 

获取tuple中的元素:


//和列表一样,通过中括号加下对应下标选取,下标从0开始,-1为倒数第一个元素,以此类推 
mytuple[0]; 
mytuple[-1]; 

其他序列类型

1.3、string,unicode,buffer,xrange

这四种类型也属于序列,但在科学计算中较少使用,故不作过多介绍。

String可视为由少量单个字符构成的list,例如:


mystring = 'orange'; 
mylist = ['o','r','a','n','g','e']; 

由于string也是序列,因此可以切片,其原理类似于由单个字符构成的list切片,此处不再赘述。

Unicode与string类似,但支持原生unicode编码的序列,例如\\u4f60\\u597d。

Buffer可视为由大量字符构成的list。

Xrange可视为由纯数字构成的list。

科学计算

散列结构详解

二、散列结构

与序列结构不同,散列结构中元素的顺序并不重要,顺序不同的散列仍被视为同一个散列。Python中的散列结构包括set和dict。

Set集合方法

2.1、set(集合)

Set,即集合,是由不重复元素组成的无序集合。其核心特征是不重复,类似于数学中的集合。无序是散列结构的特点,因此集合也具有无序性。

创建set的方法:


//和list很类似,可对应参考 
//1.通过大括号括起已知的元素创建set 
myset = {'red','blue',2.71}; 
//2.通过set()方法创建空set,注意不能用{}创建空set,这样创建的是空dict 
//3.然后用add()添加动态元素,注意不是append 
myset = set(); 
myset.add('yellow'); 
Python的set集合可以支持并集,交集,差集,对称差等数学运算:

//创建集合a 
a = set('abracadabra'); 
//创建集合b 
b = set('alacazam'); 
------------------ 
print(a) 
//结果:{'a', 'r', 'b', 'c', 'd'} 
------------------ 
print(a - b); //差集 
//结果:{'r', 'd', 'b'} 
------------------ 
print(a | b); //并集 
//结果:{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} 
------------------ 
print(a & b); //交集 
//结果:{'a', 'c'} 
------------------ 
print(a ^ b); //对称差 
//结果:{'r', 'd', 'b', 'm', 'z', 'l'} 

set常用方法包括:

  • set.remove(x),移除集合中值为x的元素,若不存在则抛出异常。
  • set.isdisjoint(set2),判断两个集合是否没有共同元素,若无共同元素返回True,否则返回False。
  • set.issubset(set2),判断集合set是否为set2的子集。
  • set.issuperset(set2),判断集合set是否包含set2,issubset与issuperset互为逆操作。

Dict字典操作

2.2、dict(字典)

Dict,即字典,由键值对组成,具有唯一性和可变性。字典本身是可变对象,但其键必须是唯一的且为不可变对象。理解字典的最佳方式是将其视为键值对的集合。

创建dict的方法:


//1.通过大括号括起键值对创建dict 
mydict = {'name':'tom','age':'24'}; 
//2.通过dict()方法创建dict 
mydict = dict(name = 'tom',age = 24); 
//3.通过大括号创建空dict,然后通过中括号添加键值对 
mydict = {}; 
mydict['tel'] = '1300000000'; 

获取dict中的元素:


//需要已经知道键的名称,否则无法获取,除非遍历 
mydict.get('tel'); 

dict常用方法包括:

  • dict.copy(),拷贝出一个新的字典。
  • dict.setdefault({'sex':'man'}),若键存在则查询,不存在则增加。
  • dict.update({'sex':'male'}),若键存在则修改,不存在则增加。
  • dict.pop('tel'),指定删除键,参数必须为需要删除的键。
  • dict.clear(),清空字典。
  • dict.keys(),查询字典中所有的键。
  • dict.values(),查询字典中所有的值。
  • dict.items(),查询字典中所有的键值对。

以上即为Python自带的数据结构,主要分为序列结构和散列结构两大类。序列结构包括list、tuple、string、unicode、buffer、xrange;散列结构包括set和dict。

总结

以上介绍了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 算法库。