Python常用数据结构

news2024/11/26 13:27:14

Python 提供了多种内置的数据结构,用于存储和组织数据。以下是一些常见的 Python 数据结构:

1.列表(List):列表是一个有序、可变的数据集合,可以包含任意类型的元素。列表使用方括号 [] 表示,元素之间用逗号分隔。例如:my_list = [1, 2, 3, 'a', 'b', 'c']。

2.元组(Tuple):元组是一个有序、不可变的数据集合,可以包含任意类型的元素。元组使用圆括号 () 表示,元素之间用逗号分隔。例如:my_tuple = (1, 2, 3, 'a', 'b', 'c')。

3.字典(Dictionary):字典是一种键值对(Key-Value)的数据结构,用于存储无序的数据集合。每个元素由一个键和一个对应的值组成,键必须是唯一的。字典使用花括号 {} 表示,每个键值对之间用冒号分隔。例如:my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}。

4.集合(Set):集合是一个无序、不重复的数据集合,用于存储唯一的元素。集合使用花括号 {} 或 set() 函数来创建,元素之间用逗号分隔。例如:my_set = {1, 2, 3, 4, 5} 或 my_set = set([1, 2, 3, 4, 5])。

5.字符串(String):字符串是一个由字符组成的不可变序列,用于存储文本数据。字符串可以使用单引号或双引号括起来,例如:my_string = "Hello, World!"。

除了这些内置的数据结构,Python 还提供了其他扩展的数据结构,如命名元组(NamedTuple)、队列(Queue)、堆(Heap)等,这些数据结构可以通过导入相应的模块来使用。

另外,Python 还支持自定义数据结构,通过类(Class)来创建自己的数据类型,可以定义数据的属性和方法,并进行封装和抽象。这使得 Python 可以根据特定的需求创建更灵活的数据结构。

当然,还有更多 Python 的数据结构:

1.堆栈(Stack):堆栈是一种具有后进先出(LIFO)特性的数据结构,类似于一叠盘子。你可以使用列表来实现一个堆栈,通过 append() 方法将元素添加到堆栈顶部,使用 pop() 方法从堆栈顶部移除元素。例如:

stack = []

stack.append(1)

stack.append(2)

stack.append(3)

print(stack.pop())  # 输出:3

2.队列(Queue):队列是一种具有先进先出(FIFO)特性的数据结构,类似于排队等候的行列。可以使用 collections 模块中的 deque 类来实现一个队列。例如:

from collections import deque


queue = deque()

queue.append(1)

queue.append(2)

queue.append(3)

print(queue.popleft())  # 输出:1

3.哈希表(Hash Table):哈希表是一种基于哈希函数实现的数据结构,用于高效地存储和检索键值对。Python 中的字典(Dictionary)就是使用哈希表实现的。例如:

hash_table = {'name': 'John', 'age': 25, 'city': 'New York'}

print(hash_table['name'])  # 输出:John

4.链表(Linked List):链表是一种数据元素按顺序链接的数据结构,每个元素包含一个值和一个指向下一个元素的引用。可以使用自定义类来实现链表,每个节点存储一个值和下一个节点的引用。例如:

class Node:

    def __init__(self, value):

        self.value = value

        self.next = None


# 创建链表

head = Node(1)

second = Node(2)

third = Node(3)


head.next = second

second.next = third


# 遍历链表

current = head

while current is not None:

    print(current.value)

    current = current.next

5.栈(Queue):栈是一种具有特定限制的线性数据结构,只允许在一端进行插入和删除操作。可以使用 queue 模块中的 LifoQueue 类来实现一个栈。例如:

from queue import LifoQueue


stack = LifoQueue()

stack.put(1)

stack.put(2)

stack.put(3)

print(stack.get())  # 输出:3

这些是 Python 中常用的一些数据结构,每个数据结构都有其特定的特性和用途,可以根据具体的问题选择合适的数据结构来存储和操作数据。

 

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

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

相关文章

谷歌周彦祺:LLM浪潮中的女性科学家多面手丨智源大会嘉宾风采

导读 大模型研发竞赛如火如荼,谷歌紧随OpenAI其后推出PalM2、Gemini等系列模型。Scaling Law是否仍然适用于当下的大模型发展?科技巨头与初创企业在竞争中各有哪些优势和劣势?模型研究者应秉持哪些社会责任? 2023智源大会「基础模…

华为OD机试真题B卷 Java 实现【最长的连续子序列】,附详细解题思路

一、题目描述 有N个正整数组成的一个序列,给定一个整数sum,求长度最长的的连续子序列使他们的和等于sum,返回该子序列的长度,如果没有满足要求的序列返回-1。 二、输入描述 第1行有N个正整数组成的一个序列。 第2行给定一个整数sum。 求最长连续子序列,只要遍历计算连…

补贴平价好书影响上亿读者:有一种力量叫“至拙”

通过一种“至拙”的力量,“多多读书月”带来诸多可喜的变化。 全民拼书:“多多读书月”带来平价好书 如果你也是一位热爱读书的小伙伴,那么想来一定不会不知道“多多读书月”。 2020年,在“三区三州”地区助力脱贫攻坚的公益活动中…

转转前端周刊第六十七期

转转前端周刊 本刊意在将整理业界精华文章给大家,期望大家一起打开视野 如果你有发现一些精华文章想和更多人分享,可以点击我们的公众号名称,将文章链接和你的解读文案发给我们!我们会对内容进行筛选和审核,保留你的推…

详细理解GPT2模型结构及其训练过程—GPT系列训练与部署

本文为博主原创文章,未经博主允许不得转载。 本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章,地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。 GPT2模型环境搭建与调试请参考博文《GPT系列训练与部署—GPT2环境配…

一分钟学一个 Linux 命令 - ls

前言 大家好,我是 god23bin。今天我给大家带来的是 Linux 命令系列,每天只需一分钟,记住一个 Linux 命令不成问题。今天,我们要介绍的是一个常用而又强大的命令:ls(list)。 什么是 ls 命令&am…

CVPR 2023 | 去雨去噪去模糊,图像low-level任务,视觉AIGC系列

Learning A Sparse Transformer Network for Effective Image Deraining 基于Transformer的方法在图像去雨任务中取得了显著的性能,因为它们可以对重要的非局部信息进行建模,这对高质量的图像重建至关重要。本文发现大多数现有的Transformer通常使用查询…

Linux的进程信号(下)

文章目录 1. 阻塞信号1.1 信号其他相关常见概念1.2 在内核中的表示 2. sigset_t3. 信号集操作函数3.1 sigprocmask3.2 sigpending3.3. 实例演示 4. 信号的处理4.1. sigaction4.2 多个信号的处理 5. 可重入函数6. volatile7. SIGCHLD信号 1. 阻塞信号 1.1 信号其他相关常见概念…

java基于springboot自来水收费缴费系统+jsp

本次设计拟采用JAVA技术,对乡镇自来水收费系统的功能需求进行了全面分析,从模块功能定义、前后端交互技术、数据库及编程语言的选择、系统调试及测试、功能完善和改进等方面进行设计,解决了从用户新装、抄表、计费、收费、复查、换表、发票管…

Pyside6-第三篇-QToolButton一个奇葩的按钮

今天是Pyside6的第三篇内容。一起来看另一个按钮。 QToolButton。 from PySide6.QtWidgets import QToolButton, QWidget, QApplicationapp QApplication([])win QWidget() win.setWindowTitle("QToolButton按钮")btn QToolButton(win) btn.setText("触发&qu…

Cell揭秘--慢性压力如何导致肠道炎症

大脑产生的信号传导到肠道神经细胞,导致炎症化学物质的释放。 溃疡性结肠炎患者的肠道组织(人工着色)。图片来源: Steve Gschmeissner/Science Photo Library 心理压力会加重某些肠道疾病引起的肠道炎症。现在,科学家们找到了原因…

初学QT(Day05)

继续第四天的demo 总结了之前的经验教训,我重新开一个项目项目,先给出demo的结果吧,第一张是第一次写的demo,第二张图是成品的demo 结果还是比较满意的,虽然过程中有遇到的问题不是我自己独立解决的。。。相比于第…

GPT-4能否取代数据分析师?达摩院的初步实验为你解答~

深度学习自然语言处理 原创作者 | 刘嘉玲 最近,数据分析师圈子大家在讨论GPT-4对他们的工作有什么影响:是替代还是辅助?个人认为GPT-4可以帮助我提高工作效率和质量。 要成为一名高级的数据分析师,需要经过长期的学习和实践&#…

无代码玩转GIS应用,我也在行【文末送书】

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通…

jQuery-图片跟随

<!DOCTYPE html > <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>图片跟随 </title> <style type"text/css"> body { text-align: center; …

【配电网重构】基于改进二进制粒子群算法的配电网重构研究(Matlab代码实现

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

使用FPGA进行 AI 火灾定位-FirAI

部署在 FPGA 上加速的 AI 火灾侦查。助力消防人员快速应对火灾事故~ 绪论 问题&#xff1a;近年来&#xff0c;不断增加的城市人口、更复杂的人口密集建筑以及与大流行病相关的问题增加了火灾侦查的难度。因此&#xff0c;为了增强消防人员对火灾事件的快速反应&#xff0c;安装…

delmia机器人建模与装配

1 可以用catia中的模型或其他三维建模软件中的模型转化为step格式即可 2 在demlia中打开 3 打开单个零件保存为cgr格式 对机械臂所有零件都做同样的转化 4 新建装配设计&#xff0c;并导入带有坐标的零件 将转化后的零件都选中导入即是装配好的 5 将模式修改为device buildin…

用户行为数据采集:常见埋点方案优劣势对比及选型建议

数据采集是大数据的基石&#xff0c;用户在使用App、微信小程序等各种线上应用产生的行为&#xff0c;只有通过埋点才能进行采集。没有埋点&#xff0c;数据分析决策、数据化运营都是无源之水&#xff0c;巧妇难为无米之炊。但很多时候&#xff0c;“埋点”两个字却成了C端产品…

STM32——关于NVIC讲解及标准库应用(基础篇)

简介&#xff1a; NVIC是指STM32中的中断控制器&#xff08;Nested Vectored Interrupt Controller&#xff09;。中断是STM32中的重要机制&#xff0c;通过中断可以实现异步事件处理。NVIC提供了灵活、高效、可扩展的中断处理机制&#xff0c;支持多级优先级、多向中断、嵌套向…