python的数据结构

文章目录

python的数据结构

  • 列表 (List):一种有序的集合,可以包含多个项目。列表中的项目可以轻松地添加、删除或更改。
python 复制代码
my_list = [1, 2, 3, 4, 5]

列表当做堆栈使用

堆栈是一种后进先出(Last In First Out, LIFO)的数据结构,允许你进行两个基本操作:

  • 压栈(Push):将一个元素放入堆栈的顶部。
  • 出栈(Pop):从堆栈的顶部移除一个元素。
    由于列表支持索引操作,你可以轻松地模拟堆栈的行为。以下是如何将列表用作堆栈的示例:
python 复制代码
# 创建一个空列表来模拟堆栈
stack = []

# 压栈操作
stack.append(1)  # 堆栈: [1]
stack.append(2)  # 堆栈: [1, 2]
stack.append(3)  # 堆栈: [1, 2, 3]

# 出栈操作
print(stack.pop())  # 输出: 3,堆栈: [1, 2]
print(stack.pop())  # 输出: 2,堆栈: [1]
print(stack.pop())  # 输出: 1,堆栈: []

在上面的例子中,append()方法用于压栈,而pop()方法用于出栈。由于列表的索引是基于0的,所以当你从空列表开始压栈时,第一个元素将成为索引0的元素,第二个元素成为索引1的元素,依此类推。

如果你想要一个更传统的堆栈实现,你可以使用Python的内置数据结构deque(双端队列),它提供了一个名为append()的方法用于压栈,以及一个名为pop()的方法用于出栈。这通常比使用列表更有效率,因为deque是为了快速在两端添加和删除元素而优化的。

python 复制代码
from collections import deque

# 创建一个空deque来模拟堆栈
stack = deque()

# 压栈操作
stack.append(1)  # 堆栈: [1]
stack.append(2)  # 堆栈: [1, 2]
stack.append(3)  # 堆栈: [1, 2, 3]

# 出栈操作
print(stack.pop())  # 输出: 3,堆栈: [1, 2]
print(stack.pop())  # 输出: 2,堆栈: [1]
print(stack.pop())  # 输出: 1,堆栈: []

我们使用了collections.deque来创建一个堆栈。deque提供了类似于列表的方法,但是它的性能在两端添加和删除元素时通常会更好。

将列表当作队列使用

列表(List)也可以被用作队列(Queue),尽管它不是专门为队列这种先进先出(First In First Out, FIFO)的数据结构设计的。列表本身是可变的,并且不保证任何顺序的元素插入或删除操作的性能。然而,由于列表的灵活性,你仍然可以模拟队列的行为。

以下是如何将列表用作队列的示例:

python 复制代码
# 创建一个空列表来模拟队列
queue = []

# 入队操作
queue.append(1)  # 队列: [1]
queue.append(2)  # 队列: [1, 2]
queue.append(3)  # 队列: [1, 2, 3]

# 出队操作
print(queue.pop(0))  # 输出: 1,队列: [2, 3]
print(queue.pop(0))  # 输出: 2,队列: [3]
print(queue.pop(0))  # 输出: 3,队列: []

在这个例子中,append()方法用于入队,而pop(0)方法用于出队。由于列表的索引是基于0的,所以当你从空列表开始入队时,第一个入队的元素将成为索引0的元素,第二个入队的元素成为索引1的元素,依此类推。出队操作通过索引0来移除并返回队列中的第一个元素。

如果你想要一个更传统的队列实现,你可以使用Python的内置数据结构deque(双端队列),它提供了一个名为append()的方法用于入队,以及一个名为popleft()的方法用于出队。这通常比使用列表更有效率,因为deque是为了快速在两端添加和删除元素而优化的。

python 复制代码
from collections import deque

# 创建一个空deque来模拟队列
queue = deque()

# 入队操作
queue.append(1)  # 队列: [1]
queue.append(2)  # 队列: [1, 2]
queue.append(3)  # 队列: [1, 2, 3]

# 出队操作
print(queue.popleft())  # 输出: 1,队列: [2, 3]
print(queue.popleft())  # 输出: 2,队列: [3]
print(queue.popleft())  # 输出: 3,队列: []

在这个例子中,我们使用了collections.deque来创建一个队列。deque提供了类似于列表的方法,但是它的性能在两端添加和删除元素时通常会更好。

  • 元组 (Tuple):一种不可变的有序集合。一旦创建,就不能修改元组中的元素。
python 复制代码
my_tuple = (1, 2, 3, 4, 5)
  • 集合 (Set):一种无序的集合,可以包含多个唯一的元素。集合用于去重和执行数学运算,如并集、交集和差集。
python 复制代码
my_set = {1, 2, 3, 4, 5}
  • 字典 (Dictionary):一种键值对的集合。字典中的每个键都映射到一个值。
python 复制代码
my_dict = {'key1': 'value1', 'key2': 'value2'}
  • 字符串 (String):不可变的文本数据。字符串可以用单引号('...')或双引号("...")表示。
python 复制代码
my_string = "Hello, World!"
  • 布尔值 (Boolean):有两个值,True 和 False。布尔值用于条件语句和逻辑运算。
python 复制代码
my_bool = True
  • None:表示无值的特殊常量。在 Python 中,None 是一个单例对象,用于表示空值或默认值。
python 复制代码
my_none = None
  • 字节对象 (Bytes):表示字节数据的序列。字节对象通常用于处理二进制数据。
python 复制代码
my_bytes = b"Hello, World!"
  • 字节数组 (bytearray):表示可变的字节序列。字节数组可以用于读写二进制数据。
python 复制代码
my_bytearray = bytearray(b"Hello, World!")
  • 范围 (Range):表示一个整数序列的范围。范围对象通常用于循环。
python 复制代码
my_range = range(5)
相关推荐
长和信泰光伏储能13 小时前
京津冀光伏发电:绿色能源的未来之路
python·能源
数据库小学妹13 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
浦信仿真大讲堂13 小时前
从重复操作到自动化闭环:如何让 CST 与 Python 真正协同起来
python·自动化·cst·仿真软件·达索软件
白白白小纯13 小时前
算法篇—反转链表
c语言·数据结构·算法·leetcode
Gu Gu Study14 小时前
ScoutLoop开放域深度研究引擎(agent的初步设计想法)
人工智能·python
神龙天舞200114 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql
卷无止境14 小时前
写代码这件事,到底该讲究点什么?
后端·python
卷无止境14 小时前
循环复杂度到底在算什么,Python 代码怎么才能写得让人一看就懂
后端·python
lpfasd12314 小时前
MediaCrawler 项目深度分析
chrome·python·chrome devtools
丙氨酸長鏈15 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库