Python3 数据结构示例详解

 更新时间:2025年11月11日 09:00:40   作者:小陶coding  
本文介绍了Python中的四种基本数据结构——列表、元组、集合和字典,以及如何根据具体需求选择合适的数据结构,文章还展示了如何使用这些数据结构进行基本操作,并提供了示例代码,感兴趣的朋友跟随小编一起看看吧

一、列表(List)

列表是可变的有序的元素集合,用方括号 [] 表示。列表支持异构数据(可包含不同类型的元素)、索引访问、切片操作和动态调整大小。

核心特点:

  • 动态长度:可随时添加或删除元素。
  • 索引访问:通过 list[index] 访问元素,索引从 0 开始。
  • 支持切片:使用 list[start:stop:step] 获取子列表。
  • 常用方法append()extend()insert()remove()pop()sort()reverse() 等。

示例代码:

# 创建列表
fruits = ["apple", "banana", "cherry"]
# 访问元素
print(fruits[0])       # 输出: apple
print(fruits[-1])      # 输出: cherry(负索引从后往前)
# 修改元素
fruits[1] = "grape"    # 列表可变,修改第二个元素
# 切片操作
print(fruits[1:3])     # 输出: ['grape', 'cherry']
# 添加元素
fruits.append("orange")  # 在末尾添加元素
fruits.insert(1, "lemon")  # 在指定位置插入元素
# 删除元素
fruits.remove("apple")   # 删除指定值的元素
popped = fruits.pop()    # 删除并返回最后一个元素
# 列表操作
print(len(fruits))       # 输出: 3(列表长度)
print("grape" in fruits) # 输出: True(元素是否存在)

二、元组(Tuple)

元组是不可变的有序的元素集合,用圆括号 () 表示。元组一旦创建,其元素不能被修改、添加或删除,适合存储不可变数据(如坐标、配置参数)。

核心特点:

  • 不可变性:创建后无法修改,保证数据安全。
  • 索引访问:与列表类似,但不能修改元素。
  • 支持切片:与列表类似,但返回新元组。
  • 常用操作:拼接、计数、查找等。

示例代码:

# 创建元组
coordinates = (10, 20)
person = ("Alice", 30, "Engineer")
# 访问元素
print(coordinates[0])    # 输出: 10
# 元组不可变(以下代码会报错)
# coordinates[0] = 5     # TypeError: 'tuple' object does not support item assignment
# 元组操作
new_coords = coordinates + (30,)  # 拼接元组
print(new_coords)                # 输出: (10, 20, 30)
print(person.count("Engineer"))  # 输出: 1(元素出现次数)
print(person.index(30))          # 输出: 1(元素首次出现的索引)

三、集合(Set)

集合是无序的唯一的元素集合,用花括号 {} 或 set() 函数创建。集合主要用于去重和成员检测,支持数学集合运算(如并集、交集、差集)。

核心特点:

  • 无序性:元素没有固定顺序,不能通过索引访问。
  • 唯一性:集合中不允许重复元素。
  • 可变但元素必须可哈希:集合本身可变,但元素必须是不可变类型(如数字、字符串、元组)。
  • 常用操作:并集(|)、交集(&)、差集(-)、对称差集(^)等。

示例代码:

# 创建集合
fruits_set = {"apple", "banana", "cherry"}
empty_set = set()  # 注意:{} 创建的是空字典,必须用 set() 创建空集合
# 自动去重
numbers = {1, 2, 2, 3, 3, 3}
print(numbers)     # 输出: {1, 2, 3}
# 添加元素
fruits_set.add("orange")
# 删除元素
fruits_set.remove("apple")  # 元素不存在时会报错
fruits_set.discard("grape") # 元素不存在时不会报错
# 集合运算
set_a = {1, 2, 3}
set_b = {3, 4, 5}
print(set_a | set_b)        # 并集: {1, 2, 3, 4, 5}
print(set_a & set_b)        # 交集: {3}
print(set_a - set_b)        # 差集: {1, 2}
print(set_a ^ set_b)        # 对称差集: {1, 2, 4, 5}

四、字典(Dictionary)

字典是可变的无序的键值对(key-value)集合,用花括号 {} 表示。字典通过键来快速查找对应的值,键必须是唯一且不可变的(如字符串、数字、元组)。

核心特点:

  • 键值对存储:每个值对应一个唯一的键。
  • 快速查找:基于哈希表实现,查找效率为 O (1)。
  • 动态调整:可随时添加、修改或删除键值对。
  • 常用方法get()keys()values()items()update() 等。

示例代码:

# 创建字典
person = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}
# 访问值
print(person["name"])      # 输出: Alice
print(person.get("age"))   # 输出: 30(使用 get() 避免键不存在时的错误)
# 修改值
person["age"] = 31         # 更新年龄
# 添加新键值对
person["job"] = "Engineer"
# 删除键值对
del person["city"]         # 删除指定键
popped_value = person.pop("age")  # 删除并返回指定键的值
# 字典操作
print(len(person))         # 输出: 2(键值对数量)
print("name" in person)    # 输出: True(检查键是否存在)
print(person.keys())       # 输出: dict_keys(['name', 'job'])
print(person.values())     # 输出: dict_values(['Alice', 'Engineer'])
print(person.items())      # 输出: dict_items([('name', 'Alice'), ('job', 'Engineer')])

五、选择合适的数据结构

根据场景选择数据结构时,可参考以下原则:

  • 需要有序且可重复的数据:使用列表(List)。
  • 需要不可变数据:使用元组(Tuple)。
  • 需要去重或集合运算:使用集合(Set)。
  • 需要键值对映射:使用字典(Dictionary)。

六、自定义数据结构

除了内置数据结构,Python 还支持通过类(Class)自定义数据结构。例如,实现一个简单的栈(Stack):

class Stack:
    def __init__(self):
        self.items = []  # 使用列表存储元素
    def is_empty(self):
        return len(self.items) == 0
    def push(self, item):
        self.items.append(item)  # 入栈操作
    def pop(self):
        if self.is_empty():
            raise Exception("Stack is empty")
        return self.items.pop()  # 出栈操作
    def peek(self):
        if self.is_empty():
            raise Exception("Stack is empty")
        return self.items[-1]    # 返回栈顶元素
    def size(self):
        return len(self.items)   # 返回栈的大小
# 使用自定义栈
stack = Stack()
stack.push(1)
stack.push(2)
print(stack.pop())  # 输出: 2
print(stack.peek()) # 输出: 1

通过掌握这些数据结构及其适用场景,你可以更高效地组织和处理数据,提升代码的可读性和性能。

到此这篇关于Python3 数据结构示例详解的文章就介绍到这了,更多相关Python 数据结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 4个的Python自动化脚本分享

    4个的Python自动化脚本分享

    这篇文章主要给大家分享了4个的Python自动化脚本,自动化脚本无需手动一次又一次地完成这些任务,非常方便,下面我能就一起进入文章来来了解实现吧,希望对你有所帮助
    2021-12-12
  • Python项目管理的利器Poetry的使用

    Python项目管理的利器Poetry的使用

    在 Python 项目开发中,包管理、依赖管理和虚拟环境的创建一直是开发者们经常面对的难题,本文主要介绍了Python项目管理的利器Poetry的使用,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • django项目中新增app的2种实现方法

    django项目中新增app的2种实现方法

    这篇文章主要介绍了django项目中新增app的2种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 用Python代码来绘制彭罗斯点阵的教程

    用Python代码来绘制彭罗斯点阵的教程

    这篇文章主要介绍了用Python代码来绘制彭罗斯点阵的教程,核心代码主要就是一行简单的lambda匿名函数,需要的朋友可以参考下
    2015-04-04
  • python树的双亲存储结构的实现示例

    python树的双亲存储结构的实现示例

    本文主要介绍了python树的双亲存储结构,这种存储结构是一种顺序存储结构,采用元素形如“[结点值,双亲结点索引]”的列表表示,感兴趣的可以了解一下
    2023-11-11
  • Python OS模块常用函数说明

    Python OS模块常用函数说明

    这篇文章主要介绍了Python OS模块常用函数说明,本文列出了一些在os模块中比较有用的部分函数,它们中的大多数都简单明了,需要的朋友可以参考下
    2015-05-05
  • Python中的并发编程asyncio库入门使用

    Python中的并发编程asyncio库入门使用

    这篇文章主要为大家介绍了Python中的并发编程asyncio库入门的使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Python 循环语句之 while,for语句详解

    Python 循环语句之 while,for语句详解

    Python中有两种循环,分别为:for循环和while循环。 for循环可以遍历任何序列的项目,如一个列表或者一个字符串。while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
    2018-04-04
  • Python无头爬虫下载文件的实现

    Python无头爬虫下载文件的实现

    这篇文章主要介绍了Python无头爬虫下载文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python之如何合并excel的多个sheet

    python之如何合并excel的多个sheet

    文章介绍使用openpyxl和pandas处理Excel报表,前者需手动合并逻辑,后者通过concat/append简化操作,强调data_only参数避免公式干扰,并可实现数据过滤、转换等功能
    2025-09-09

最新评论