15分钟学Python 第18天 : 线性数据结构

news2025/10/28 3:39:50

Day18 : 线性数据结构

线性数据结构是编程中非常基础且重要的概念,主要包括以下几种数据结构:

  1. 列表 (List)
  2. 元组 (Tuple)
  3. 字典 (Dictionary)
  4. 集合 (Set)
  5. 队列 (Queue)
  6. 栈 (Stack)

在本节中,我们将逐一探讨这些数据结构的特点、使用场景、操作方法以及示例代码。


1. 列表 (List)

1.1 概述
  • 列表是Python中最常用的线性数据结构,可以存储多个项目。
  • 列表是可变的,允许重复元素。
1.2 常用操作
操作描述示例代码
创建列表使用中括号[]my_list = [1, 2, 3, 4]
访问元素用索引访问元素my_list[0] # 1
修改元素直接赋值my_list[1] = 5
添加元素使用append()my_list.append(6)
删除元素使用remove()my_list.remove(2)
列表长度使用len()len(my_list) # 5
1.3 示例代码
# 创建和操作列表
my_list = [1, 2, 3, 4]
print("原始列表:", my_list)

# 添加元素
my_list.append(5)
print("添加元素后:", my_list)

# 删除元素
my_list.remove(2)
print("删除元素后:", my_list)

# 修改元素
my_list[0] = 10
print("修改元素后:", my_list)

# 访问元素
print("第一个元素:", my_list[0])
print("列表长度:", len(my_list))
1.4 代码运行流程图
+---------------------+
|     创建列表       |
|    my_list = [1, 2, 3, 4] |
+----------+----------+
           |
           v
+----------+----------+
|  print("原始列表:", my_list)|
+----------+----------+
           |
           v
+----------+----------+
|    添加元素        |
| my_list.append(5)  |
+----------+----------+
           |
           v
+----------+----------+
| print("添加元素后:", my_list) |
+----------+----------+

2. 元组 (Tuple)

2.1 概述
  • 元组是不可变的序列,适用于存储固定的元素。
2.2 常用操作
操作描述示例代码
创建元组使用小括号() my_tuple = (1, 2, 3)
访问元素用索引访问元素my_tuple[0] # 1
合并元组使用+new_tuple = my_tuple + (4,)
元组长度使用len()len(my_tuple) # 3
2.3 示例代码
# 创建和操作元组
my_tuple = (1, 2, 3)
print("原始元组:", my_tuple)

# 访问元素
print("第一个元素:", my_tuple[0])

# 合并元组
new_tuple = my_tuple + (4,)
print("合并后元组:", new_tuple)

# 元组长度
print("元组长度:", len(my_tuple))

3. 字典 (Dictionary)

3.1 概述
  • 字典是一种可变的键值对数据结构,用于存储数据(无序)。
3.2 常用操作
操作描述示例代码
创建字典使用花括号{}my_dict = {'a': 1, 'b': 2}
访问元素用键访问值my_dict['a'] # 1
添加或更新直接赋值my_dict['c'] = 3
删除元素使用deldel my_dict['b']
字典长度使用len()len(my_dict) # 2
3.3 示例代码
# 创建和操作字典
my_dict = {'a': 1, 'b': 2}
print("原始字典:", my_dict)

# 访问元素
print("a的值:", my_dict['a'])

# 添加或更新元素
my_dict['c'] = 3
print("更新字典:", my_dict)

# 删除元素
del my_dict['b']
print("删除后字典:", my_dict)

# 字典长度
print("字典长度:", len(my_dict))

4. 集合 (Set)

4.1 概述
  • 集合是无序的且不包含重复元素的线性结构,支持数学集合运算。
4.2 常用操作
操作描述示例代码
创建集合使用set(){}my_set = {1, 2, 3}
添加元素使用add()my_set.add(4)
删除元素使用remove()my_set.remove(2)
集合长度使用len()len(my_set) # 3
4.3 示例代码
# 创建和操作集合
my_set = {1, 2, 3}
print("原始集合:", my_set)

# 添加元素
my_set.add(4)
print("添加后集合:", my_set)

# 删除元素
my_set.remove(2)
print("删除后集合:", my_set)

# 集合长度
print("集合长度:", len(my_set))

5. 队列 (Queue)

5.1 概述
  • 队列是一种FIFO(先进先出)数据结构,常用于任务调度等场景。
5.2 常用操作
操作描述示例代码
创建队列使用dequefrom collections import deque
入队使用append()queue.append(1)
出队使用popleft()item = queue.popleft()
队列长度使用len()len(queue)
5.3 示例代码
from collections import deque

# 创建和操作队列
queue = deque()
print("原始队列:", queue)

# 入队
queue.append(1)
queue.append(2)
print("入队后队列:", queue)

# 出队
item = queue.popleft()
print("出队的元素:", item)
print("出队后队列:", queue)

# 队列长度
print("队列长度:", len(queue))

6. 栈 (Stack)

6.1 概述
  • 栈是一种LIFO(后进先出)数据结构,适合用于撤销操作和递归等场景。
6.2 常用操作
操作描述示例代码
创建栈使用liststack = []
入栈使用append()stack.append(1)
出栈使用pop()item = stack.pop()
栈长度使用len()len(stack)
6.3 示例代码
# 创建和操作栈
stack = []
print("原始栈:", stack)

# 入栈
stack.append(1)
stack.append(2)
print("入栈后栈:", stack)

# 出栈
item = stack.pop()
print("出栈的元素:", item)
print("出栈后栈:", stack)

# 栈长度
print("栈长度:", len(stack))

7. 总结与练习

在本节中,我们涵盖了线性数据结构的基本概念和常用操作。接下来,您可以进行以下练习以加深理解:

7.1 练习题
  1. 列表: 编写一个函数,接受一个列表并返回其中的最大值和最小值。
  2. 元组: 编写一个函数,接受一个元组,返回元组中偶数位置上的元素。
  3. 字典: 编写一个函数,接受一个字典,返回所有值的和。
  4. 集合: 编写一个函数,接受两个集合,返回它们的交集。
  5. 队列: 使用队列实现一个简单的任务调度程序,至少添加五个任务,并按顺序执行它们。
  6. : 实现一个基本的计算器,支持加法、减法、乘法和除法,使用栈来存储操作数。

通过这些练习,您将获得对线性数据结构的深入理解,进一步提升编程能力。


怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!

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

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

相关文章

数据科学的核心工具箱:全面解析pandas、matplotlib.pyplot与scipy.stats在复杂数据分析流程中的应用

在当今数据驱动的世界中,Python已成为数据分析和科学计算的首选语言。 而 pandas 、 matplotlib.pyplot 和 scipy.stats 这三个库则是数据科学家和分析师武器库中 的三把利剑。 1. pandas 数据处理的瑞士军刀 pandas 库是 Python数据分析 的基石,它…

Distilabel合成数据生成框架简明教程

Distilabel 是一个用于合成数据和 AI 反馈的框架,适用于需要基于经过验证的研究论文的快速、可靠和可扩展的管道的工程师。 NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 -…

SpringCloud~

帮你轻松入门SpringCloud~ 1 微服务概述 1.1什么是微服务 如idea中使用maven建立的一个个moudle,它具体是使用SpringBoot开发的一个小模块,专业的事交给专业的模块来做,每个模块完成一个具体的任务或功能。 1.2 什么是微服务架构 它将单一应用…

MyBatis 动态 SQL 使用指南

MyBatis 是一个流行的持久层框架,它通过 XML 或注解将接口方法与 SQL 映射在一起。动态 SQL 是 MyBatis 的一大特性,它使得构建灵活的查询变得简单。本文将通过一个 User 表的示例,介绍 MyBatis 中常用的动态 SQL 方法。 1. 什么是动态 SQL&…

飞驰云联亮相电子半导体数智化年会 获”数据交换领域最佳厂商”

2024年9月20日,“2024第二届电子半导体/智能制造数智化年会暨品牌出海论坛”于上海隆重开幕,Ftrans飞驰云联作为国内领先的数据安全交换厂商,应邀携半导体全场景产品和解决方案亮相此次峰会。会上进行了“智象奖”评选,Ftrans飞驰…

sql中的regexp与like区别

sql中的regexp与like区别 1、REGEXP2、LIKE3、区别与选择 💖The Begin💖点点关注,收藏不迷路💖 1、REGEXP 用途:高级字符串匹配,使用正则表达式。特点:灵活性强,能进行复杂模式匹配…

Java项目实战II基于Java+Spring Boot+MySQL的汽车销售网站(文档+源码+数据库)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在数字化时…

【iOS】引用计数(一)

【iOS】引用计数 文章目录 【iOS】引用计数前言ARC与MRC什么是引用计数的机制内存管理的思考方式自己生成的对象非自己生成的对象不再需要自己持有就释放无法释放非自己持有的对象 autorelease小结 前言 笔者最近开始学习了一下有关于引用计数的内容,写这篇博客来简…

自动驾驶规划算法(一):A*算法原理和代码(c++与python)

1. A*算法简介 A*算法(A-star algorithm)诞生于1968年,由彼得哈特(Peter Hart)、尼尔森尼尔森(Nils Nilsson)和伯特拉波特(Bertram Raphael)三位计算机科学家提出。它的…

[机器学习]04-逻辑回归(python)-03-API与癌症分类案例讲解

逻辑回归(Logistic Regression) 的一API 介绍 关于如何配置模型中的优化器、正则化和惩罚项。 1. 逻辑回归 API 在 Scikit-learn 中,逻辑回归可以通过如下方式定义: from sklearn.linear_model import LogisticRegression ​ …

C嘎嘎入门篇:类和对象(1)

前言: 小编在之前讲述了C的部分入门基础,读者朋友一定要掌握好那些,因为C的学习和C有点不同,C的知识都是比较连贯的,所以我们学好了前面才可以学习后面的内容,本篇文章小编将会讲述C真正的入门篇&#xff1…

爬虫逆向学习(九):记录一个集cookie、请求参数、请求体、响应文本加密的站点反爬

此分享只用于学习用途,不作商业用途,若有冒犯,请联系处理 反爬前置信息 站点:aHR0cHM6Ly96d2Z3LmNxLmdvdi5jbi9pY2l0eS9pY2l0eS9lbmdpbmVlcmluZy9uYXZpZ2F0aW9u 接口:/icity/api-v2/cq.app.icity.engineering.Engine…

vue3组件通信(组合式API)

vue3组件通信(组合式API) vue3组件通信,采用组合式API。选项式API,参看官网 Vue3组件通信和Vue2的区别: 移出事件总线,使用mitt代替。 vuex换成了pinia。把.sync优化到了v-model里面了。把$listeners所…

fo-dicom开源库,深入理解项目的模块化设计

前言 DICOM(Digital Imaging and Communications in Medicine)是医学图像和相关信息的国际标准,广泛应用于医学影像领域。FO-DICOM是一个开源的DICOM库,提供了丰富的功能和模块,用于处理DICOM数据、实现DICOM网络通信…

16.面试算法-树的层次遍历与相关面试题

1. 树的层次遍历与相关面试题 1.1 层次遍历简介 广度优先在面试里出现的频率非常高,但是相对简单,题目也比较少,常见的题目也就七八道。 广度优先又叫层次遍历,基本过程如下: 层次遍历就是从根节点开始&#xff0c…

【STM32】 TCP/IP通信协议(1)

一、前言 TCP/IP是干啥的?它跟SPI、IIC、CAN有什么区别?它如何实现stm32的通讯?如何去配置?为了搞懂这些问题,查询资料可解决如下疑问: 1.为什么要用以太网通信? 以太网(Ethernet) 是指遵守 IEEE 802.3 …

【mbti课堂】计算机系统的六个层次与指令系统

课件:可以从 6 个层次分析和看待计算机系统的基本组成。 指令系统层处在硬件系统和软 件系统之间, 是硬、 软件之间的接口部分, 对两部分都有重要影响。 硬件系统用于实现每条指令的功能, 解决指令之间的衔接关系; 软件…

Golang | Leetcode Golang题解之第437题路径总和III

题目: 题解: func pathSum(root *TreeNode, targetSum int) (ans int) {preSum : map[int64]int{0: 1}var dfs func(*TreeNode, int64)dfs func(node *TreeNode, curr int64) {if node nil {return}curr int64(node.Val)ans preSum[curr-int64(targ…

复杂网络分析_NetworkX

一:NetworkX简介 NetworkX库是一个用于创建、操作复杂网络的结构、动态和功能的Python库。在经济网络中,它可以帮助分析各种经济实体(如公司、个人、国家)之间的相互关系和互动模式。以下是一些NetworkX在经济网络分析中的实际应…

ArrayList源码实现(一)

ArrayList源码实现(一) 1. ArrayList的大小是如何自动增加的? 初始化 在构造函数中,可以设定列表的初始值大小,如果没有的话默认使用,提供的静态数据 public ArrayList(int initialCapacity) {if (initi…