当前位置: 首页 > article >正文

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.kler.cn/news/317274.html

相关文章:

  • 【LeetCode:1014. 最佳观光组合 + 思维题】
  • 【linux】基础IO(上)
  • 使用 PHPstudy 建立ThinkPHP8 本地集成环境
  • SM2协同签名算法中随机数K的随机性对算法安全的影响
  • (八)使用Postman工具调用WebAPI
  • 花园管理系统
  • 论文阅读与分析:Few-Shot Graph Learning for Molecular Property Prediction
  • 服务器操作系统【sar 命令】
  • MongoDB的备份和恢复命令
  • macos macport软件包管理工具 sudo port install xxx 安装的软件的路径 与 brew install xxx 软件安装路径总结
  • 【android10】【binder】【3.向servicemanager注册服务】
  • 科研小白入门工具
  • 探究RAG技术在自然语言处理领域的未来发展
  • 数学建模 第二讲 - 初等建模
  • Linux C# Day4
  • Opencv图像预处理(三)
  • MapReduce基本原理
  • 探索以太坊:从基础到应用,解锁区块链技术的无限可能
  • 基于飞腾平台的OpenCV的编译与安装
  • 基向量和投影矩阵
  • 鸿蒙OpenHarmony【轻量系统内核通信机制(互斥锁)】子系统开发
  • 面试金典题9
  • SRS流媒体服务器在宝塔面板下的安装
  • 预计2030年全球GO电工钢市场规模将达到120.6亿美元
  • centos7安装docker DokcerCompose
  • <<编码>> 第 17 章 自动操作(2)--自动加法器 示例电路
  • 筛子排序(SieveSort) - 4
  • docker如何升级MySQL为最新版本
  • 在windows上使用vs code调试Rust程序
  • 安全审计与监控的核心作用!确保网络安全等级保护的有效性