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

news2024/11/23 23:50:20

更多资料获取

作者主页:涛哥聊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 = value
        self.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 = value
        self.left = None
        self.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.coloradmin.cn/o/1023019.html

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

相关文章

DMNet复现(二)之模型篇:Density map guided object detection in aerial image

以前用Swin Transformer Tiny训练了40epoch的,官方用的Faster RCNN,这里先用Swin Transformer Tiny进行测试。 模型训练 采用基于MMDetection的框架Swin Transformer Tiny进行训练,训练方法可参考官方教程。 融合检测 Global Image 检测 …

无涯教程-JavaScript - SEC函数

描述 SEC函数返回Angular的割线。 语法 SEC (number)争论 Argument描述Required/OptionalNumberNumber is the angle in radians for which you want the secant.Required Notes 数字的绝对值必须小于2 ^ 27 如果Angular为度,则将Angular乘以PI()/180或使用RADIANS函数将…

彻底学会Unity中UGUI中UI元素自适应问题

彻底学会Unity中UGUI中UI元素自适应问题 包会的简单版教程 狂飙模式: 经过自我进化学习,终于参悟。看完这个教程,你也可以! 1.扫盲UGUI的理解: Unity3d 中的UI都是画在画布上的。就像画一幅画,首先我们需…

iPhone NFC 设置教程(门禁卡/公交卡/校园卡等等)

苹果手机如何开启NFC功能呢?相信不少小伙伴都对iPhone手机里的NFC用法都不太了解。尽管小米、华为、荣耀、一加、oppo、vivo等安卓手机的NFC使用已经满大街了,不仅功能齐全而且快捷安全,但是这一功能在苹果手机上还很鸡肋,因为它对…

DBSCAN聚类的Python 实现

一、说明 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类是一种基于密度的聚类算法。它能够根据数据点的密度来将数据划分为不同的类别,并可以自动识别离群点。DBSCAN聚类算法的核心思想是将密度高的数据点划分为…

MongoDB——关于NumberLong处理大整数

1、问题 MongoDB根据某个Long类型ID查询数据查不出来 db.getCollection(school_work_section).find({school_work_section_id:577199363866206209}); 2、解决办法 Long类型的需要在NumberLong的对象里加上双引号才能查出来 db.getCollection(school_work_section).find({sc…

初识C语言——详细入门一(系统性学习day4)

目录 前言 一、C语言简单介绍、特点、基本构成 简单介绍: 特点: 基本构成: 二、认识C语言程序 标准格式: 简单C程序: 三、基本构成分类详细介绍 (1)关键字 (2&#xf…

搭建ELK+Filebead+zookeeper+kafka实验

一、ELKFilebeadzookeeperkafka架构 第一层:数据采集层(Filebeat) 数据采集层位于最左边的业务服务集群上,在每个业务服务器上面安装了filebead做日志收集,然后把采集到的原始日志发送到kafkazookeeper集群上。 第二…

文件拷贝【 使用字节流完成文件的复制(支持一切文件类型的复制)】

需求: 把某个视频复制到 E:\\videocopy\\new.mp4 思路: 根据 数据源 创建字节输入流对象根据 目的地 创建字节输出流对象读写数据,复制视频释放资源 可以拷贝 视频 ,图片 ,文本.txt 等文件 package com.csdn.d2_byte_…

Linux grep命令

①grep命令——过滤文件 这是txt.txt的内容 通过grep管道符查找gcc内容在txt.txt文件中 查找gcc所处行位置,加上-n 查找有多个相同内容的数据 ②wc命令——数量统计 统计数据如图: ③管道符——左边结果作为右边输入 如下图所示统计txt.txt文件"-&…

连续性数据进行Meta荟萃分析

Meta荟萃分析(也称Meta分析,元分析,异质性分析等),其是一种综合各种文献结论,进而汇总综合评价的方法,Meta分析常用于医学、心理学、教育学、生态学等专业领域。通俗地看,Meta分析是…

物 理 层

二、物理层 1、物理层的基本概念 物理层的作用:尽可能的屏蔽掉传输媒体和通信手段的差异,使物理层上面的数据链路层感觉不到这些差异,使其只需要考虑如何完成本层的协议和服务 1.1、物理层的主要任务 机械特性:指明接口所用的接线器的形状…

【计算机视觉】1. 计算机视觉基础理论知识和框架(Basic Concepts)

什么是计算机视觉? 一、什么是计算机视觉二、二个研究维度三、研究挑战3.1 像素与语义之间的GAP3.2 视觉变化3.3 光照变化3.4 尺度变化3.5 形态变化3.6 背景复杂3.7 遮挡3.8 内外 四、计算机视觉框架4.1 计算机视觉基础4.2 深度学习算法理论基础4.3 深度学习算法 五、计算机视…

SpringBoot3与IDE中配置JDK17

概述 SpringBoot3需要JDK17的支持,不再支持JDK8。 如果要运行SpringBoot3的项目,根据使用的IDE,需要的配置不同。 配置说明 1. SpringToolSuite4 如果使用的是SpringToolSuite4(STS),比较简单&#xf…

接入网技术

接入网 接入网是指骨干网络到用户或企业之间的所有设备。其长度一般为几百米到几公里,因而形象地被称为“最后一公里”。接入网地接入方式包括铜线(普通电话线)接入、基于双绞线的ADSL技术、基于HFC网(光纤和同轴电缆(有线电视电缆)混合网)的Cable Modem技术、光纤接入…

「聊设计模式」之职责链模式(Chain of Responsibility)

🏆本文收录于《聊设计模式》专栏,专门攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎持续关注&&收藏&&订阅! 前言 设计模式是解决软件开发中常见问题的可复用解决方案。其中…

一篇文章教你Pytest快速入门和基础讲解,一定要看!

前言 目前有两种纯测试的测试框架,pytest和unittestunittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口pytest是基于unittest开发的另一款更高级更好用的单元测试框架出去面试也好,跟别…

爬虫工作者必备:使用爬虫ip轻松获得最强辅助

在进行网络数据爬取时,爬虫ip成为了爬虫工作者们的得力辅助。通过使用爬虫ip,可以实现IP地址的伪装和分布式请求,有效规避访问限制和提高爬取效率。本文将为爬虫工作者们分享关于使用爬虫ip的知识,帮助您轻松获取最强辅助&#xf…

【JavaEE】多线程案例-单例模式

文章目录 1. 前言2. 什么是单例模式3. 如何实现单例模式3.1 饿汉模式3.2 懒汉模式4. 解决单例模式中遇到的线程安全问题4.1 加锁4.2 加上一个判断解决频繁加锁问题4.2 解决因指令重排序造成的线程不安全问题 1. 前言 单例模式是我们面试中最常考到的设计模式。什么是设计模式呢…

Linux 用户注意!GNOME 45 将影响所有扩展!

GNOME 45 是一次重要的升级,但对扩展的影响并不令人满意! 每当 GNOME 升级,总会有一些扩展遭遇问题,这点并不新鲜。但如今,到了 GNOME 45,每个扩展都将面临问题! 那么,究竟是什么原…