Python基础数据结构入门必读指南

更多资料获取

作者主页:涛哥聊Python

个人网站:涛哥聊Python


大家好,我是涛哥,今天为大家分享的是Python中常见的数据结构。

1.数组

含义:数组是一种有序的数据结构,其中的元素可以按照索引来访问。数组的大小通常是固定的,一旦创建就不能更改。

基本操作:

# 创建数组
arr = [1, 2, 3, 4, 5]# 访问元素
element = arr[2]  # 获取第三个元素,索引从0开始# 修改元素
arr[1] = 6# 获取数组长度
length = len(arr)# 迭代数组
for item in arr:print(item)

2.列表

含义:列表是Python中内置的数据结构,它是一种有序的可变序列,可以存储不同类型的元素。

基本操作:

# 创建列表
my_list = [1, 2, 3, "hello"]# 添加元素
my_list.append(4)  # 添加元素到末尾
my_list.insert(2, 5)  # 在指定位置插入元素# 删除元素
my_list.remove(3)  # 移除指定元素
popped_item = my_list.pop()  # 移除并返回末尾元素# 获取列表长度
length = len(my_list)# 列表切片
subset = my_list[1:3]  # 获取索引1到2的子列表

3.栈

含义:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。

基本操作:

# 创建空栈
stack = []# 入栈
stack.append(1)
stack.append(2)# 出栈
popped_item = stack.pop()# 获取栈顶元素
top_item = stack[-1]# 检查栈是否为空
is_empty = len(stack) == 0

4.队列

含义:队列是一种先进先出(FIFO)的数据结构,只能在队列的一端进行插入操作,另一端进行删除操作。

基本操作:

from collections import deque# 创建空队列
queue = deque()# 入队
queue.append(1)
queue.append(2)# 出队
popped_item = queue.popleft()# 获取队列头元素
front_item = queue[0]# 检查队列是否为空
is_empty = len(queue) == 0

5.链表

含义:链表是一种动态数据结构,由节点组成,每个节点包含一个数据元素和指向下一个节点的引用。链表可以是单链表、双链表或循环链表。

基本操作:

class ListNode:def __init__(self, value):self.value = valueself.next = None# 创建链表节点
node1 = ListNode(1)
node2 = ListNode(2)# 构建链表
node1.next = node2# 遍历链表
current = node1
while current:print(current.value)current = current.next

6.哈希表(字典)

含义:哈希表是一种键值对存储结构,它通过哈希函数将键映射到特定的存储位置,以实现快速的查找和插入操作。

基本操作:

# 创建空字典
my_dict = {}# 添加键值对
my_dict["name"] = "Alice"
my_dict["age"] = 30# 获取值
value = my_dict["name"]# 删除键值对
del my_dict["age"]# 检查键是否存在
key_exists = "name" in my_dict

7.树

含义:树是一种层次结构的数据结构,由节点组成,每个节点可以有零个或多个子节点。树常用于表示层次关系,例如文件系统、组织结构等。

基本操作:树的基本操作包括节点的插入、删除和遍历。

class TreeNode:def __init__(self, value):self.value = valueself.left = Noneself.right = None# 创建树节点
root = TreeNode(1)
node2 = TreeNode(2)
node3 = TreeNode(3)# 构建树结构
root.left = node2
root.right = node3# 遍历树(例如中序遍历)
def inorder_traversal(node):if node:inorder_traversal(node.left)print(node.value)inorder_traversal(node.right)inorder_traversal(root)

8.图

含义:图是一种表示对象之间关系的数据结构,由节点(顶点)和边组成。图可以是有向的或无向的,可以用于表示网络、社交关系等复杂结构。

基本操作:图的基本操作包括节点的添加、删除以及边的添加和删除。图的遍历操作可以有深度优先搜索(DFS)和广度优先搜索(BFS)等。

class Graph:def __init__(self):self.graph = {}def add_node(self, node):if node not in self.graph:self.graph[node] = []def add_edge(self, node1, node2):self.graph[node1].append(node2)self.graph[node2].append(node1)# 创建图
my_graph = Graph()
my_graph.add_node("A")
my_graph.add_node("B")
my_graph.add_edge("A", "B")# 图的遍历示例
def dfs(graph, start, visited=None):if visited is None:visited = set()visited.add(start)print(start, end=' ')for neighbor in graph[start]:if neighbor not in visited:dfs(graph, neighbor, visited)print("深度优先搜索结果:")
dfs(my_graph.graph, "A")

今天的分享就到这里了。


最后

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。
在这里插入图片描述

资料领取方式:

如果您渴望获取更多关于Python编程的宝贵资料,不妨访问我的个人主页。在那里,您将发现更多深入的Python教程、实用工具、项目示例以及专业建议等等。
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

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

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

相关文章

Python灰帽编程——错误异常处理与面向对象

文章目录 错误异常处理与面向对象1. 错误和异常1.1 基本概念1.1.1 Python 异常 1.2 检测(捕获)异常1.2.1 try except 语句1.2.2 捕获多种异常1.2.3 捕获所有异常 1.3 处理异常1.4 特殊场景1.4.1 with 语句 1.5 脚本完善 2. 内网主机存活检测程序2.1 scap…

Windows+Pycharm 如何创建虚拟环境

当我们开发一个别人的项目的时候,因为项目里有很多特有的包,比如 Pyqt5.我们不想破坏电脑上原来的包版本,这个时候,新建一个虚拟环境,专门针对这个项目就很有必要了. 简略步骤: 1.新建虚拟环境 1.打开 pycharm 终端(Terminal)安装虚拟环境工具: pip install virtualenv2.创…

随手笔记(四十五)——idea git冲突

图片为引用,在一次导入项目至gitee的过程中,不知道为什么报了403,很奇怪的一个错误,网上很多的答案大概分成两种。 第一种是最多的,直接找到windows凭据删掉 很抱歉的告诉各位,你们很多人到这里就已经解…

keil报错:Flash Download failed - Could not load file‘..\..\Output\Template.axf

keil报错:Flash Download failed - Could not load file’…\Output\Template.axf,如下图所示: 原因是很多.h文件没有定义位置,可以按照下图操作: 而且,如果是想使用压缩包,那一定要关闭keil后…

AH8316芯片:高效12V转5V 5A电源解决方案

AH8316是一款内置MOS的高效电源转换芯片,具有广泛的应用领域。本文将介绍AH8316芯片的主要特性和性能指标,以及其在12V转5V 5A电源转换中的应用。 AH8316芯片主要特性: 1. 输入电压范围广泛:芯片支持7V至32V的输入电压范围&#…

LeetCode(力扣)62. 不同路径Python

LeetCode62. 不同路径 题目链接代码 题目链接 https://leetcode.cn/problems/unique-paths/ 代码 递归 class Solution:def uniquePaths(self, m: int, n: int) -> int:if m 1 or n 1:return 1return self.uniquePaths(m, n - 1) self.uniquePaths(m - 1, n)动态 c…

MySQL 索引(一)

1.数据访问方式 在 MySQL 中,通常有两种方式访问数据库表的行数据:顺序访问和索引访问。 1.1.顺序访问 顺序访问是在表中实行全表扫描,从头到尾逐行遍历,直到在无序的行数据中找到符合条件的目标数据。实现比较简单&#xff0c…

需要每日温习的java八股文基础

一、java (1)集合 1.list:LinkedList、ArrayList和Vector ArrayList、LinkedList和Vector的区别,场景和扩容机制源码 LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不…

YOLOv5算法改进(17)— 更换损失函数(EIoU、AlphaIoU、SIoU和WIoU)

前言:Hello大家好,我是小哥谈。损失函数(loss function)是机器学习中用来衡量模型预测值与真实值之间差异的函数。它用于度量模型在训练过程中的性能,以便优化模型参数。在训练过程中,损失函数会根据模型的…

problen(5)ubuntu版本问题

浅浅记录一下这段时间的血和泪吧,大概耗时快一个月了吧,终于解决了...... 因为需要开启pwn之旅,需要在Ubuntu上安装一些东西,就是下面的一条命令: sudo pip3 install pwntools -i Simple Index(显示不太好了…

vue移动端页面适配

页面的适配,就是一个页面能在PC端正常访问,同时也可以在移动端正正常访问。 现在我们可以通过弹性布局【Flexible布局】、媒体查询和响应式布局。除此之外,还可以通过rem和vw针对性地解决页面适配问题。 响应式布局 响应式布局的核心&…

Android悬浮窗实现源码-悬浮球转盘悬浮加速小火箭效果悬浮播放视频图片

一、实现思路 悬浮窗是一种比较常见的需求,就是把需要展示的内容界面缩小成一个悬浮窗,然后用户可以在其他界面上处理事情。 基本实现原理: 主要是通过WindowManager这个类来实现 addView方法用于添加一个悬浮窗, updateViewLay…