目录

  1. 引言
  2. Python3 数据结构概述
  3. 列表
  4. 元组
  5. 字典
  6. 集合
  7. 堆栈
  8. 队列
  9. 链表
  10. 结论
  11. 参考资料

1. 引言

在 Python 中,数据结构是存储和组织数据的一种方式。数据结构不仅仅有助于高效存储数据,还能影响程序的执行效率。Python 提供了几种常用的数据结构,如列表、元组、字典和集合等,每种数据结构具有独特的特性和使用场景。

本教程将详细介绍 Python3 中常用的数据结构,帮助您了解其定义、特性以及如何创建和使用它们。


2. Python3 数据结构概述

Python 中的常用数据结构包括:

  • 列表(List):有序集合,可变,支持索引、切片、拼接等操作。
  • 元组(Tuple):有序集合,不可变,通常用于存储不需要修改的数据。
  • 字典(Dictionary):无序集合,由键值对组成,键是唯一的。
  • 集合(Set):无序且不重复的集合,用于成员关系测试和去重操作。
  • 堆栈(Stack):遵循后进先出(LIFO)原则的数据结构。
  • 队列(Queue):遵循先进先出(FIFO)原则的数据结构。
  • 链表(Linked List):由节点组成的线性数据结构,每个节点包含数据和指向下一个节点的引用。

3. 列表

3.1 定义与特性

  • 定义:列表是一个有序集合,用方括号 [] 表示,元素可以是任意类型。
  • 特性
    • 可变:可以修改、添加或删除元素。
    • 有序:按插入顺序排序。
    • 支持索引和切片操作。

3.2 创建与操作

创建列表的方法:

# 直接创建
lst = [1, 2, 3]
# 空列表
empty_lst = []
# 使用 range() 创建列表
lst_range = list(range(5))

常见操作:

  • 添加元素append(), insert()
  • 删除元素remove(), pop()
  • 访问元素:索引和切片
  • 长度len()

3.3 常见操作示例

lst = [1, 2, 3, 4]
lst.append(5)  # 添加元素
print(lst)  # 输出: [1, 2, 3, 4, 5]

lst.insert(2, 'a')  # 插入元素
print(lst)  # 输出: [1, 2, 'a', 3, 4, 5]

lst.remove(3)  # 删除元素
print(lst)  # 输出: [1, 2, 'a', 4, 5]

print(lst[2])  # 索引访问: 输出 'a'


4. 元组

4.1 定义与特性

  • 定义:元组是一个有序集合,用圆括号 () 表示,元素不可变。
  • 特性
    • 不可变:创建后不可更改,适用于存储不需要修改的数据。
    • 支持索引和切片。
    • 轻量级:比列表占用更少内存。

4.2 创建与操作

# 直接创建
tup = (1, 2, 3)
# 空元组
empty_tup = ()
# 单元素元组
single_tup = (1,)

常见操作:与列表操作类似,但无法修改元素。

4.3 常见操作示例

tup = (1, 2, 3, 4)
print(tup[2])  # 输出: 3

# 切片操作
print(tup[1:3])  # 输出: (2, 3)


5. 字典

5.1 定义与特性

  • 定义:字典是由键值对组成的无序集合,用大括号 {} 表示,键是唯一的。
  • 特性
    • 可变:可以修改、添加或删除键值对。
    • 键是唯一且不可变的,值可以是任何数据类型。

5.2 创建与操作

# 直接创建
dct = {'name': 'Alice', 'age': 25}
# 空字典
empty_dct = {}

常见操作:访问、修改、删除键值对

5.3 常见操作示例

dct = {'name': 'Alice', 'age': 25}
print(dct['name'])  # 输出: Alice

dct['age'] = 26  # 修改值
print(dct)  # 输出: {'name': 'Alice', 'age': 26}

del dct['age']  # 删除键值对
print(dct)  # 输出: {'name': 'Alice'}


6. 集合

6.1 定义与特性

  • 定义:集合是一个无序且不重复的元素集合,用大括号 {} 表示。
  • 特性
    • 无序:元素没有索引。
    • 元素唯一:重复的元素会被自动去重。

6.2 创建与操作

# 创建集合
s = {1, 2, 3, 4}
# 空集合
empty_set = set()

常见操作:添加、删除元素,集合运算

6.3 常见操作示例

s = {1, 2, 3}
s.add(4)  # 添加元素
print(s)  # 输出: {1, 2, 3, 4}

s.remove(3)  # 删除元素
print(s)  # 输出: {1, 2, 4}


7. 堆栈

7.1 定义与特性

  • 定义:堆栈遵循后进先出(LIFO)原则,最后添加的元素最先被移除。
  • 特性
    • 常见操作:push() 添加元素,pop() 移除元素。

7.2 实现方式与操作

堆栈可以使用列表实现,append() 用于添加元素,pop() 用于移除元素。

stack = []
stack.append(1)  # 入栈
stack.append(2)
print(stack.pop())  # 出栈: 输出 2


8. 队列

8.1 定义与特性

  • 定义:队列遵循先进先出(FIFO)原则,第一个添加的元素最先被移除。
  • 特性
    • 常见操作:enqueue() 添加元素,dequeue() 移除元素。

8.2 实现方式与操作

队列可以通过 collections.deque 实现,它支持高效的队尾添加和队首删除操作。

from collections import deque

queue = deque()
queue.append(1)  # 入队
queue.append(2)
print(queue.popleft())  # 出队: 输出 1


9. 链表

9.1 定义与特性

  • 定义:链表是一种线性数据结构,由多个节点组成,每个节点包含数据和指向下一个节点的引用。
  • 特性
    • 节点有两个部分:数据和指向下一个节点的引用。

9.2 实现方式与操作

链表通常由类定义,可以通过创建节点类和链表类来实现。以下是一个简单的链表实现示例。

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class LinkedList:
    def __init__(self):
        self.head = None
    
    def append(self, data):
        new_node = Node(data)
        if not self.head:
            self.head = new_node
        else:
            last = self.head
            while last.next:
                last = last.next
            last.next = new_node


10. 结论

Python 提供了多种数据结构,适用于不同的应用场景。了解和掌握这些数据结构对于编写高效且易维护的代码至关重要。常用的数据结构如列表、元组、字典和集合为日常开发提供了强大支持,而堆栈、队列和链表则用于处理更复杂的应用场景。


11. 参考资料

  1. Python 官方文档 – 数据结构
  2. Real Python – Python Data Structures
  3. W3Schools – Python Data Structures

站内链接