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|集合类】list遍历的6种方式
java·python·list
IMPYLH5 小时前
Python 的内置函数 reversed
笔记·python
计算机毕设定制辅导-无忧学长6 小时前
西门子 PLC 与 Modbus 集成:S7-1500 RTU/TCP 配置指南(一)
服务器·数据库·tcp/ip
小赖同学啊7 小时前
物联网数据安全区块链服务
开发语言·python·区块链
程序员柳7 小时前
基于微信小程序的校园二手交易平台、微信小程序校园二手商城源代码+数据库+使用说明,layui+微信小程序+Spring Boot
数据库·微信小程序·layui
码荼7 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
梦在深巷、7 小时前
MySQL/MariaDB数据库主从复制之基于二进制日志的方式
linux·数据库·mysql·mariadb
IT乌鸦坐飞机7 小时前
ansible部署数据库服务随机启动并创建用户和设置用户有完全权限
数据库·ansible·centos7
IT_10247 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
学不动CV了8 小时前
数据结构---线性表理解(一)
数据结构