python数据结构学习系列

在Python编程中,数据结构是组织、管理和存储数据的方式,以便能够有效地执行特定的操作。数据结构的选择对于算法的效率、代码的清晰度和可维护性都至关重要。以下是对Python中常见数据结构的学习总结。

  1. 列表(List)

    • 列表是Python中最基本的数据结构之一,它支持索引、切片、追加和删除等操作。
    • 列表可以包含不同类型的元素,并且大小是动态的。
    • 列表支持负索引,可以从末尾开始计数。
    • 常用操作:append()insert()remove()pop()index()count()sort()reverse()等。例如:
      weather_forecast = ["晴", "雨", "多云", "雪", "雾", "晴", "风"]  
      print(weather_forecast[2])  # 输出:多云
  2. 元组(Tuple)

    • 元组与列表相似,但它是不可变的,这意味着一旦一个元组被创建,就不能修改其内容。
    • 元组通常用于存储不可变的数据集合,如坐标点或函数返回的多个值。
    • 由于元组是不可变的,因此在需要高效查找和不变性的情况下,它们通常比列表更快。 例如:
      point1 = (1, 2)  
      point2 = (4, 6)  
      distance = ((point2[0] - point1[0])**2 + (point2[1] - point1[1])**2)**0.5  
      print(distance)  # 输出:5.0
  3. 字典(Dictionary)

    • 字典是一个无序的键值对集合。
    • 字典允许通过键快速查找值,平均时间复杂度为O(1)。
    • 字典在Python中非常常用,因为它们是存储和检索数据的有效方式。
    • 常用操作:get()set()update()keys()values()items()pop()等。例如:
      students = {"张三": 1001, "李四": 1002, "王五": 1003}  
      print(students["李四"])  # 输出:1002
  4. 集合(Set)

    • 集合是一个无序的、不重复的元素集合。
    • 集合用于执行成员检测、消除重复项以及数学运算(如并集、交集、差集等)。
    • 集合不支持索引和切片操作,但支持快速的成员检测。
    • 常用操作:add()remove()discard()pop()union()intersection()difference()symmetric_difference()等。例如:
      list1 = [1, 2, 3, 4, 5]  
      list2 = [4, 5, 6, 7, 8]  
      common_elements = set(list1) & set(list2)  
      print(common_elements)  # 输出:{4, 5}
  5. 字符串(String)

    • 字符串在Python中是不可变的字符序列。
    • 字符串支持索引、切片、连接、分割等操作。
    • 字符串是不可变的,这意味着一旦创建了一个字符串,就不能修改它。但可以通过连接、切片等操作生成新的字符串。
    • 常用操作:len()find()replace()split()join()lower()upper()strip()等。例如:
      name = "张三"  
      greeting = "欢迎, " + name + "!"  
      print(greeting)  # 输出:欢迎, 张三!
  6. 自定义数据结构

    • 除了内置的数据结构外,Python还允许程序员根据需要定义自己的数据结构。
    • 常见的自定义数据结构包括栈、队列、链表、树和图等。
    • 这些数据结构在实现特定的算法和应用程序时非常有用。

总的来说,选择适当的数据结构对于编写高效、可维护的Python代码至关重要。不同的数据结构适用于不同的应用场景,因此需要根据具体的需求来选择合适的数据结构。通过学习和实践,我们可以更好地掌握Python中的数据结构,并在编程中灵活应用它们。

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

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

相关文章

selenium测试工具用来模拟用户浏览器的操作

执行JS的类库:execjs,PyV8,selenium,node pip list pip install selenium pip install xlrd pip install xlwt pip install PyExecJS pip install xlutils selenium测试工具可以用来模拟用户浏览器的操作,其支持的浏览…

能当老板的AI大模型多智体框架MetaGPT自动完成项目

能当老板的AI大模型多智体框架MetaGPT自动完成项目。 MetaGPT是一个创新的多智能体框架,它结合了大语言模型(LLM)和多智能体协作系统,旨在通过模拟人类工作流程来解决复杂问题。这个框架的核心在于将标准化操作程序(SO…

Redis学习路径(构建体系)

学习路径 掌握数据类型(分析底层数据结构)和缓存的基本使用 (理论使用) 掌握 redis 实现高性能,高可靠、高可用技术 (理论)学习redis源代码底层实现 (底层实现) 先来一个引言,比较宏观的角度&#xf…

Linux常用操作命令

Linux作为一种广泛应用的操作系统,其强大的命令行工具使得用户能够高效地管理文件、处理数据和监控系统。在本文中,我们将深入 探讨一些常用的Linux操作命令及其用法。 ls:列出当前目录下的文件和子目录。 ls [选项] [文件或目录]常用选项&am…

Python实现MACD工具判断信号:股票技术分析的工具系列(1)

Python实现MACD工具判断信号:股票技术分析的工具系列(1) 介绍代码rolling函数介绍核心代码计算指数移动平均值计算MACD指标 完整代码 介绍 先看看官方介绍: MACD (平滑异同平均线) 指标说明 DIF线:收盘价短…

#单片机(TB6600驱动42步进电机)

1.IDE:keil 2.设备:保密 3.实验:使用单片机通过普通IO口控制TB6600驱动42步进电机 4.时序图: TB6600 ENA、ENA-DIR-、DIRPUL-、PULB-、BA、A-VCC、GND使能电机(直接悬空不接)方向脉冲输入(普通IO口模拟即可&#xff…

Linux系统编程7--线程 写个测试脚本

Linux系统编程7–线程_写个测试脚本 参考博客: Linux多线程编程初探 - 峰子_仰望阳光 - 博客园 (cnblogs.com) 我的PC是8核*16进程,所以在固定的时间点,我可以同时运行8 * 16的进程,更多的线程(任务管理器)…

【学习笔记】Diffusion扩散模型

导读 Diffusion models是现在人工智能领域最火的方向之一,并引爆了AIGC领域,一大批创业公司随之诞生。 AIGC(AI-Generated Content):人工智能创作内容的生产方式。 扩散模型Diffusion 扩散模型Duffison的训练过程 …

等概率事件算法

1等概率的生成(0-8)范围内的正整数 // Math.random 数据范围[0,1) 且 是 等概率的产生随机数 // 应用: // 1.生成等概率的整数(等概率的生成(0-8)范围内的正整数 int value (int) (Math.random() * 9); System.out.println("value "…

非阻塞实现高效键盘扫描功能(STM32F4XX)

目录 概述 1 原理分析 1.1 技术背景 1.2 系统硬件 1.3 STM32 IO(输入模式)寄存器分析 1.3.1 输入IO的功能描述 1.3.2 输入配置 1.3.3 GPIO 寄存器(输入模式相关) 1.3.3.1 GPIO 端口模式寄存器 1.3.3.2 GPIO 端口上拉/下拉…

springboot,druid动态数据源切换

关键字:springboot,druid数据库连接池,两个数据源(可以切换成多个),事务管理 关于druid简介传送门:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98 具体分为四…

Doris【数据模型】

一、数据模型简介 在 Doris 中,数据以表(Table)的形式进行逻辑上的描述。 一张表包括行(Row)和列(Column)。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 Column 可以分为两…

autoware.universe中跟踪模块详解,一看就懂!

目录 问题:阅读关键点:总结问题: 根据对预测模块代码的分析,发现预测框出现在点云前方的原因在于跟踪框出现在点云前方 对rviz上的目标进行观察后发现 车辆的检测框先出来一段时间后,跟踪框和预测框同步一块出来 跟踪框总是超出点云一部分 阅读关键点: 每个跟踪器最少要统计…

7.1.2 Selenium的用法1

目录 1. 初始化浏览器对象和访问页面 2. 查找节点及节点交互 2.1 查找单个节点 (1)获取方法1——特定方法 (2)通用方法 2.2 查找多个节点 2.3 节点交互 3. 动作链 4. 执行 JavaScript 之下拉进度条 5. 获取节点信息 5.…

谷歌seo推广秒收录怎么做?

谷歌SEO推广秒收录想要做到,可以利用我们光算科技独家技术,GSI快速收录,通过技术手段和操作,帮你的网站快速被谷歌发现和记录 这项技术具体核心就是GPC爬虫池系统,这个系统是专门研究谷歌搜索引擎优化的规律和算法创造…

【QT】QTableView或QTableWidget 搭配QLineEdit实现数据的搜索显示

在 Qt 中,QTableView 和 QTableWidget 都可以用来实现数据的搜索和显示,但它们的适用场景和实现方式有所不同: QTableView 适用场景:QTableView 适用于更复杂的场景,尤其是当需要处理大量数据或需要高度定制化的表格时…

66-ES6:var,let,const,函数的声明方式,函数参数,剩余函数,延展操作符,严格模式

1.JavaScript语言的执行流程 编译阶段:构建执行函数;执行阶段:代码依次执行 2.代码块:{ } 3.变量声明方式var 有声明提升,允许重复声明,声明函数级作用域 访问:声明后访问都是正常的&…

拿下边界机器进行内网渗透的方案

拿下机器后,使用代理访问内网 windows环境:reGeorg与proxifier Linux环境:reGeorg与proxychains, 使用nmap等工具进行扫描,发现web服务的主机和其它信息。有时这些边界机器上会记录一些 内网服务器上的一些信息&…

QT C++实现点击按键弹出窗口并显示图片/视频|多窗口应用程序的设计和开发

一、介绍 首先,QT界面开发中主要大体分为2种多窗口的形式: 嵌入式: 新生成的窗口嵌入在主窗口内部独立窗口: 以弹窗形式的新窗口生成和展示 这里就讲解最简单的:点击案件后,跳出一个新窗口 二、代码实…

利用FFMPEG 将RTSP流的音频G711 转码为AAC 并 推流到RTMP

之前我们的视频转码项目中 是没有加入音频的 现在 需要加入音频 ,由于RTMP只支持AAC的 音频流 而有的RTSP流的音频编码并不是AAC 大多数都是G711编码 还分为G711A 和G711U 之前用ffmpeg命令行可以直接 完成转码 并推送到RTMP 但是考虑到无法获取更详细的状…