AI教你学Python 第18天 : 线性数据结构

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.xdnf.cn/news/147377.html

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

相关文章

【解密 Kotlin 扩展函数】命名参数和默认值(十三)

导读大纲 1.0.1 命名参数1.0.2 默认参数值 上一节讲述如何自定义 joinToString 函数来代替集合的默认字符串表示 文末遗留下几个待优化问题–传送门 1.0.1 命名参数 我们要解决的第一个问题涉及函数调用的可读性 例如,请看下面的joinToString调用: joinToString(collection,&…

循环中用sleep

echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);} 没有用sleep,快速消耗cpu和内存 使用sleep后效果 echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);usleep(1000);//php 暂停0.001秒} 总结&#xff1a;sleep能释放资源(cpu和内存)&#xff0c;但是运…

2025校招内推-招联金融

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

LeetCode 面试经典150题 191.位1的个数

Java中的算术右移和逻辑右移的区别 题目&#xff1a;编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数&#xff08;也被称为汉明重量&#xff09;。 设置位的个数即二进制中1的个数。 思路&#xff1a;方法一&#xff1a;因为正数的原…

【永磁同步电机(PMSM)】 4. 同步旋转坐标系仿真模型

【永磁同步电机&#xff08;PMSM&#xff09;】 4. 同步旋转坐标系仿真模型 1. Clarke 变换的模型与仿真1.1 Clarke 变换1.2 Clarke 变换的仿真模型 2. Park 变换的模型与仿真2.1 Park 变换2.2 Park 变换的仿真模型 3. Simscape标准库变换模块3.1 abc to Alpha-Beta-Zero 模块3…

java反射基础知识

1.java的反射机制 Java 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为 Java 语言的反射…

学生管理系统1.0版本

学生管理系统1.0版本有5个功能&#xff0c;即添加学生、删除学生、修改学生、查看全部学生、退出系统。 里面对添加重复学号、删除和修改不存在的学号等问题都有相应的解决办法。 代码区&#xff1a; Student.java package student;//快捷键Altinsert public class Student …

Machine Learning Specialization 学习笔记(4)

文章目录 前言一、模型评估训练集常规训练集线性回归逻辑回归 交叉验证集 偏差与方差正则化 学习曲线数据集的添加&#xff08;数据增强&#xff09;迁移学习精确率与召回率 二、决策树基本概念决策树的工作原理决策树的优点决策树的缺点决策树算法的变体决策树在Python中的实现…

Shell 脚本学习

Shell学习 Shell 脚本 Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服…

xxl-job使用总结

xxl-job从入门到入土 xxl-job介绍 xxl-job是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。xxl-job支持调度中心集群和执行器集群。 xxl-job开源项目 xxl-job使用 xxl-job整合SpringBoot 引入xxl-job的依赖 <dependency>…

ArcGIS核密度分析(栅格处理范围与掩膜分析)

多时候我们在进行栅格分析的时候&#xff0c;处理的结果不能完全覆盖我们需要的范围。 比如&#xff0c;我们对点数据进行密度分析、栅格插值等。比如下图 为什么会如此呢&#xff1f; 那是因为在做这个密度分析或者栅格插值的时候&#xff0c;默认是以点的四至范围来生成的&am…

LeetCode 热题 100 回顾9

干货分享&#xff0c;感谢您的阅读&#xff01;原文见&#xff1a;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…

算法之逻辑斯蒂回归(Logistic regression)

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 逻辑斯蒂回归&#xff08;Logistic Regression&#xff09;是统计学中一种广泛应用于二分类问题的算法。它的主要目标是预测二分类问题中的事件发生的概率。尽管名字里有“回归”&#xff0c;但逻…

2024已然过半,AI技术卷到哪儿了?

可以说&#xff0c;科技的发展真的是日新月异&#xff0c;2024年年初&#xff0c;大模型Sora的出现&#xff0c;改变了短视频行业的演变方向&#xff0c;使得AI技术不再只是停留在文生文&#xff0c;文生图阶段&#xff0c;而是发展到了文生视频领域。2024年5月&#xff0c;回忆…

Java笔试面试题AI答之设计模式(5)

文章目录 21. 简述Java什么是适配器模式 ?适配器模式的主要组成部分包括&#xff1a;适配器模式的实现方式主要有两种&#xff1a;适配器模式的优点&#xff1a;适配器模式的缺点&#xff1a;示例说明&#xff1a; 22. 请用Java代码实现适配器模式的案例 &#xff1f; 21. 简述…

OpenCL 学习(2)---- OpenCL Platform 和 Device

目录 OpenCL PlatformOpenCL Device参考代码 OpenCL Platform opencl 支持的 Platform 可以使用 clGetPlatformIDs 函数查询&#xff0c;函数原型如下&#xff1a; clGetPlatformIDs(cl_uint /* num_entries */,cl_platform_id * /* platforms */,cl_uint * …

深度之眼(三十)——pytorch(一)--深入浅出pytorch(附安装流程)

文章目录 一、前言一、pytoch二、六个部分三、如何学习四、学习路径&#xff08;重要)五、安装pytorch5.1 坑15.2 坑2 一、前言 我看了下目录 第一章和第二章都是本科学的数字图像处理。 也就是这一专栏&#xff1a;数字图像实验。 所以就不准备学习前两章了&#xff0c;直接…

神奇的可变模板参数的应用(C++标准库双向链表 list 中的emplace函数实现)

我们先来看一个可以构造任意对象的函数&#xff1a; /// <summary> /// 可以构造任意对象的函数 /// </summary> /// <typeparam name"MyClass">要转换对象的类型</typeparam> /// <typeparam name"...MyClassConstructorParameterT…

新手上路:在Windows CPU上安装Anaconda和PyCharm

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一. 确认自己是CPU为什么选择CPU教程&#xff1f;GPU与CPU的区别如何判断自己是CPU 二. Anaconda 安装包 和 Pycharm 安装包步骤1&#xff1a;下载Anaconda步骤2&am…

摆脱困境并在iPhone手机上取回删除照片的所有解决方案

您是否无意中从 iPhone 中删除了照片&#xff1f;您&#xff0c;无需惊慌&#xff0c;因为您可以使用以下方法恢复所有照片。 如果您长时间使用 iPhone&#xff0c;您应该知道 iOS 提供了许多 Android 不提供的备份功能。例如&#xff0c;您的所有照片都会自动备份到 iCloud 存…