python的数据结构

文章目录

  • python的数据结构
    • 列表当做堆栈使用
    • 将列表当作队列使用

python的数据结构

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

列表当做堆栈使用

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

  • 压栈(Push):将一个元素放入堆栈的顶部。
  • 出栈(Pop):从堆栈的顶部移除一个元素。
    由于列表支持索引操作,你可以轻松地模拟堆栈的行为。以下是如何将列表用作堆栈的示例:
# 创建一个空列表来模拟堆栈
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是为了快速在两端添加和删除元素而优化的。

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)的数据结构设计的。列表本身是可变的,并且不保证任何顺序的元素插入或删除操作的性能。然而,由于列表的灵活性,你仍然可以模拟队列的行为。
以下是如何将列表用作队列的示例:

# 创建一个空列表来模拟队列
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是为了快速在两端添加和删除元素而优化的。

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):一种不可变的有序集合。一旦创建,就不能修改元组中的元素。
my_tuple = (1, 2, 3, 4, 5)
  • 集合 (Set):一种无序的集合,可以包含多个唯一的元素。集合用于去重和执行数学运算,如并集、交集和差集。
my_set = {1, 2, 3, 4, 5}
  • 字典 (Dictionary):一种键值对的集合。字典中的每个键都映射到一个值。
my_dict = {'key1': 'value1', 'key2': 'value2'}
  • 字符串 (String):不可变的文本数据。字符串可以用单引号(‘…’)或双引号(“…”)表示。
my_string = "Hello, World!"
  • 布尔值 (Boolean):有两个值,True 和 False。布尔值用于条件语句和逻辑运算。
my_bool = True
  • None:表示无值的特殊常量。在 Python 中,None 是一个单例对象,用于表示空值或默认值。
my_none = None
  • 字节对象 (Bytes):表示字节数据的序列。字节对象通常用于处理二进制数据。
my_bytes = b"Hello, World!"
  • 字节数组 (bytearray):表示可变的字节序列。字节数组可以用于读写二进制数据。
my_bytearray = bytearray(b"Hello, World!")
  • 范围 (Range):表示一个整数序列的范围。范围对象通常用于循环。
my_range = range(5)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代理IP安全问题:在国外使用代理IP是否安全

目录 前言 一、国外使用代理IP的安全风险 1. 数据泄露 2. 恶意软件 3. 网络攻击 4. 法律风险 二、保护国外使用代理IP的安全方法 1. 选择可信的代理服务器 2. 使用加密协议 3. 定期更新系统和软件 4. 注意网络安全意识 三、案例分析 总结 前言 在互联网时代&…

【postgresql 基础入门】带过滤条件的查询,where子句中的操作符介绍,案例展示,索引失效的大坑就在这里

查询数据-过滤数据 ​专栏内容: postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献: toadb开源库 个人主页:我的主页 管理社区:开源数据库 座右铭:天行健,君子以自强不息;地势坤&#…

翻译平台翻译模型大模型 英翻中 en-zh 评测

评测语句 Trump was always bothered by how Trump Tower fell 41 feet short of the General Motors building two blocks north 结论 大模型翻译最佳,第三方里百度次之,翻译模型还不太行 测试过程 翻译模型 facebook mbart-large-50-many-to-many-…

【Unity】实现从Excel读取数据制作年份选择器

效果预览: 此处利用Excel来读取数据来制作年份选择器,具体步骤如下。 如果只是制作年份选择器可以参考我这篇文章:构建简单实用的年份选择器(简单原理示范) 目录 效果预览: 一、 Excel准备与存放 1.1 …

openssl3.2 - exp - calc PE file checksum and SHA3-512

openssl3.2 - exp - calc PE file checksum and SHA3-512 概述 想在程序中, 对自身的PE内容算校验和和HASH, 然后送给服务端判断PE文件是否被修改了. 前几天, 看了一个资料, 里面有算PE校验和的实现. 迁移到自己工程. 但是没有算HASH, 正好已经将openssl官方demo过了一遍, 有…

K8s Pod资源管理组件

目录 Pod基础概念 在Kubrenetes集群中Pod有如下两种使用方式 pause容器使得Pod中的所有容器可以共享两种资源 网络 存储 总结 kubernetes中的pause容器主要为每个容器提供功能 Kubernetes设计这样的Pod概念和特殊组成结构的用意 通常把Pod分为以下几类 自主式Pod 控…

【字符串】-Lc3-无重复字符的最长子串(indexOf(String str, int fromIndex))

写在前面 最近想复习一下数据结构与算法相关的内容,找一些题来做一做。如有更好思路,欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 &…

input css padding

这样控件会跑出外套控件在HTML JSP里面是经常出现的。但有些外国adobe的as控件不存在这种情况,这是因为内层控件定义的时候不能超出外层控件的范围。 修改下:去掉原来css padding,然后加上宽度和高度

C语言 常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。 常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。 常量就像是常规的变量,只不过常量的…

EAP-TLS实验之Ubuntu20.04环境搭建配置(FreeRADIUS3.0)(四)

该篇主要介绍了利用配置ca.cnf、server.cnf、client.cnf在certs路径下生成证书文件(非执行bootstrap脚本,网上也有很多直接通过openssl命令方式生成的文章),主要参考(概括中心思想)官方手册,以及…

s-table和columns初始化不完整,造成table文件的filter报错

问题 顺藤摸瓜找errorHandler.js文件 发现文件并没有什么问题 顺藤摸瓜找index.vue文件 首先找到报错的filter,发现与columnsSetting相关 找到columnsSetting发现等于columns 返回自己使用S-table组件的地方,发现columns初始化时仅初始化为ref()未表明…

统信软件:统一操作系统 UOS 代言人

这是ren_dong的第32篇原创 1、Deepin Deepin:最受欢迎的民用国产操作系统 2008 年,Deepin 操作系统最早版本正式发布,是由 深之度创始人刘闻欢组织团队研发的基于 Debian 的本地化 Linux 操作系统 2011 年,武汉深之度科技有限公司成立,开始产…

Facebook的虚拟社交愿景:元宇宙时代的新起点

在当今数字化时代,社交媒体已经成为人们生活中不可或缺的一部分。而随着科技的不断进步和社会的发展,元宇宙已经成为了人们关注的热点话题之一。作为社交媒体的领军企业之一,Facebook也在积极探索虚拟社交的未来,将其视为元宇宙时…

LeetCode 2886.改变数据类型

DataFrame students ------------------- | Column Name | Type | ------------------- | student_id | int | | name | object | | age | int | | grade | float | ------------------- 编写一个解决方案来纠正以下错误: grade 列被存储为浮点数,将它转…

6U VPX全国产飞腾D2000/8核+复旦微FPGA信息处理主板

产品特性 产品功能 飞腾计算平台,国产化率100% VPX-MPU6503是一款基于飞腾D2000/8核信息处理主板,采用由飞腾D2000处理器飞腾X100桥片的高性能计算机模块,双通道16G贴装内存,板载128G 固态SSD;预留固态盘扩展接口&…

cppzmq入门

cppzmq是一个基于ZeroMQ的开源C 库,用于构建分布式和并发应用程序。它提供了与ZeroMQ消息队列进行通信的简单接口。本文将介绍cppzmq的基本概念、常用模式以及示例代码。 基本概念 ZeroMQ:ZeroMQ是一个轻量级的消息队列库,它允许应用程序通过…

LaTeX笔记

文章目录 基本操作文本加粗 图片插入引用 表格插入引用 公式插入引用 参考文献超链接跳转问题修改hyperref包属性,去掉方框 latex入门指南:插入图片、表格、公式方法一览_latex插入表格-CSDN博客 基本操作 文本加粗 先选中,再 ctrlb 图片…

试题 算法训练 礼物

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 JiaoShou在爱琳大陆的旅行完毕,即将回家,为了纪念这次旅行,他决定带回一些礼物给好朋友。…

蓝桥杯第十二届电子类单片机组程序设计

目录 前言 蓝桥杯大赛历届真题_蓝桥杯 - 蓝桥云课(点击查看) 单片机资源数据包_2023(点击下载) 一、第十二届比赛原题 1.比赛题目 2.题目解读 蓝桥杯第十四届电子类单片机组程序设计_蓝桥杯单片机哪一届最难-CSDN博客 二、…

金三银四面试必问:Redis真的是单线程吗?

文章目录 01 Redis中的多线程1)redis-server:2)jemalloc_bg_thd3)bio_xxx: 02 I/O多线程03 Redis中的多进程04 结论▼延伸阅读 由面试题“Redis是否为单线程”引发的思考 作者:李乐 来源:IT阅读…