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)
相关推荐
喵叔哟3 分钟前
重构代码之移动字段
java·数据库·重构
念白4437 分钟前
智能病历xml提取
数据库·sql·oracle
qingy_204611 分钟前
【JavaWeb】JavaWeb入门之XML详解
数据库·oracle
大数据面试宝典15 分钟前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt
努力的小雨20 分钟前
快速上手 KSQL:轻松与数据库交互的利器
数据库·经验分享
封步宇AIGC20 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
何曾参静谧21 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Gentle58622 分钟前
labview中连接sql server数据库查询语句
数据库·labview
Gentle58623 分钟前
labview用sql server数据库存取数据到一个单元格
数据库·labview
Prejudices24 分钟前
C++如何调用Python脚本
开发语言·c++·python