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

数据结构【1】:数组专题

一、定义

数组是编程中一种强大的数据结构,它允许您存储和操作相同类型元素的集合。在 Python 中,数组是通过数组模块创建的,该模块提供了一个简单的接口来创建、操作和处理数组。

二、创建数组

在 Python 中,可以使用内置的 array 模块或第三方的 NumPy 库来创建和处理数组。

  1. array 模块提供了一种创建和处理数组的简单方式,可以创建固定长度的数组,并指定数据类型
  2. 在 array 模块中,可以选择不同的数据类型代码来表示不同的数据类型,
  • ‘i’ – 表示有符号整数;
  • ‘f’ – 表示浮点数;
  • ‘d’ – 表示双精度浮点数;
  • ‘u’ – 表示无符号整数等。
import array# 创建数组,指定数据类型为整数
# 在创建数组时,需要指定数据类型,数据类型指定为 'i',表示整数类型
a = array.array('i', [1, 2, 3, 4, 5])# 访问数组元素
print(a[0])# 遍历数组
for i in a:print(i)# 修改数组元素
a[0] = 10# 输出数组元素
print(a)
  1. 使用Numpy库创建数组
    NumPy 库提供了更多高级的数组操作和算法,可以创建多维数组,并提供了向量化运算等功能,是科学计算和数据分析领域经常使用的工具。
import numpy as np# 创建 1 维数组
a = np.array([1, 2, 3])# 打印数组和数据类型
print(a)
print(a.dtype)# 创建 2 维数组
b = np.array([[1, 2, 3], [4, 5, 6]])# 打印数组
print(b)# 创建全 0 或全 1 的数组
c = np.zeros((2, 3))  # 2x3 的全 0 数组
d = np.ones((2, 3))   # 2x3 的全 1 数组# 打印数组
print(c)
print(d)

三、访问数组元素

创建数组后,我们可以使用数组索引访问数组元素。数组索引从0开始,因此数组中第一个元素的索引为0,第二个元素的索引为1,以此类推。

import array as arr# 创建一个整数数组
my_array = arr.array('i', [1, 2, 3, 4, 5])# 访问数组的第一个元素
print(my_array[0])
# 输出: 1# 访问数组的第二个元素
print(my_array[1])
# 输出: 2# 访问数组的最后一个元素
print(my_array[-1])
# 输出: 5

四、数组切片

我们还可以使用切分法访问数组中的一系列元素。分片允许我们创建一个新数组,其中包含原始数组中元素的子集。

import array as arr# 创建一个整数数组
my_array = arr.array('i', [1, 2, 3, 4, 5])# 对数组进行切分,得到前三个元素
print(my_array[0:3])
# 输出: array('i', [1, 2, 3])# 对数组进行切分,得到最后三个元素
print(my_array[-3:])
# 输出: array('i', [3, 4, 5])

五、数组操作

Python 中的数组是可变的,这意味着我们可以在数组创建后修改其元素。我们可以添加或删除元素,改变元素的值,甚至改变数组中元素的类型。

1、添加元素

要向数组中添加元素,我们可以使用append()方法。该方法将元素添加到数组的末尾。【添加的必须是同一类型的元素

import array as arr# 创建一个整数数组
my_array = arr.array('i', [1, 2, 3, 4, 5])# 为数组添加新元素# 使用 append() 方法在数组末尾添加一个元素。
my_array.append(6)
print(my_array)
# 输出: array('i', [1, 2, 3, 4, 5, 6])# 使用 insert() 方法在指定索引位置插入一个元素
my_array.insert(2, 10)
print(my_array)
# 输出:array('i', [4, 5, 10])# 使用 extend() 方法将一个列表添加到数组末尾

2、删除元素

要从数组中删除一个元素,我们可以使用remove()方法。该方法从数组中删除第一个出现的指定元素。

import array as arr# 创建一个整数数组
my_array = arr.array('i', [1, 2, 3, 4, 5])# 从数组中删除一个元素# 使用 remove() 方法删除第一个匹配的元素
my_array.remove(3)
print(my_array)
# 输出: array('i', [1, 2, 4, 5])# 使用 pop() 方法删除指定索引位置的元素,并返回该元素
my_array.pop(0)
print(my_array)
# 输出:array('i', [2, 4, 5])# 使用 del 关键字删除指定索引位置或切片范围内的元素
del my_array[0]
print(my_array)
# 输出:array('i', [4, 5])

3、改变元素

要改变数组中一个元素的值,我们可以简单地为指定索引处的元素赋一个新值。和数组元素类型是同一类型

import array as arr# 创建一个整数数组
my_array = arr.array('i', [1, 2, 3, 4, 5])# 改变数组中一个元素的值
my_array[0] = 10# 打印更新后的数组
print(my_array)
# 输出: array('i', [10, 2, 3, 4, 5])

参考一,参考二

相关文章:

数据结构【1】:数组专题

一、定义 数组是编程中一种强大的数据结构,它允许您存储和操作相同类型元素的集合。在 Python 中,数组是通过数组模块创建的,该模块提供了一个简单的接口来创建、操作和处理数组。 二、创建数组 在 Python 中,可以使用内置的 a…...

【Spring】Spring 事务

Spring 事务 文章目录 Spring 事务1. 简介2. Spring事务管理器3. 基本使用4. 属性剖析5. 声明式事务问题场景5.1 事务不生效5.2 事务不回滚5.3 大事务问题 6. 编程式事务 1. 简介 编程式事务:指手动编写程序来管理事务,即通过编写代码的方式直接控制事务…...

Ubuntu 虚拟机环境,编译AOSP源码

环境 : VMware虚拟机 Ubuntu 20.04.3 LTS 搭建配置开发环境 sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl…...

2023.12.18杂记

今天特地搜了一下国内不错的博客网站,本来想在掘金上写的,但是怕被人喷(,所以还是决定在csdn上写了哈哈哈。 这篇文章主要整理一下我今天写代码时遇到的疑惑以及记录一下思考过程吧。 第一个注意的地方,我们的get查询…...

智能优化算法应用:基于阿基米德优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于阿基米德优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于阿基米德优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.阿基米德优化算法4.实验参数设定…...

K8s内容器拓扑图工具

1.背景:随着线上容器越来越多,需要一个可视化的方式展示各个容器之间的拓扑图。 2.需求:轻量级,部署方便。 3.部署 helm repo add groundcover https://helm.groundcover.com/ helm repo update helm install caretta --namespa…...

掌握 Babel:让你的 JavaScript 与时俱进(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...

Mysql进阶-InnoDB引擎事务原理及MVCC

事务原理 事务基础 事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系 统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 事务的四大特性: 原子性(A…...

「X」Embedding in NLP|神经网络和语言模型 Embedding 向量入门

在「X」Embedding in NLP 进阶系列中,我们介绍了自然语言处理的基础知识——自然语言中的 Token、N-gram 和词袋语言模型。今天,我们将继续和大家一起“修炼”,深入探讨神经网络语言模型,特别是循环神经网络,并简要了解…...

JVM-11-运行时栈帧结构

“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual MachineStack)的栈元素。 栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回…...

【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! X的平方根 class Soluti…...

【大麦小米学量化】使用xtquant调用迅投MiniQMT客户端定时操作逆回购,再也不担心忘了赚零花钱了(含完整源代码)

文章目录 前言一、逆回购是什么?1. 什么是逆回购?2. 最低参与金额是多少?3. 逆回购交易是否安全?4. 逆回购交易适合什么类型的客户? 二、讯投XtQuant是什么?1. XtQuant运行依赖环境2. XtQuant运行逻辑 三、…...

php hyperf 读取redis,存储到数据库

背景说明 小白:伟哥,java中的set是无序的,Redis中可以带顺序吗? 伟哥:可以, 不过不叫set了,叫zset。 概述 SortedSet又叫zset,它是Redis提供的特殊数据类型,是一种特殊…...

云原生之深入解析K8S 1.27新特性如何简化状态服务跨集群平滑迁移

一、背景 Kubernetes v1.26 为 StatefulSet 引入了一个新的 Alpha 级别特性,可以控制 Pod 副本的序号。从 Kubernetes v1.27 开始,此特性进级到 Beta 阶段。序数可以从任意非负数开始, 那么该如何使用此功能呢?StatefulSet 序号为…...

鸿蒙OS:打破界限的操作系统新星

导言 鸿蒙OS(HarmonyOS)是华为公司为应对技术封锁而推出的分布式操作系统,其背后蕴含着华为构建全球数字生活愿景的雄心。本文将深入剖析鸿蒙OS的起源、核心特性,并展望其未来在数字生态中的角色。 1. 背景与起源 华为的…...

预测性维护在汽车制造行业中的应用

汽车制造行业是一个高度复杂和精细化的领域,依赖于各种设备来完成生产流程。这些设备包括机械装配线、焊接机器人、喷涂设备、传送带等。然而,这些设备在长时间运行中不可避免地会遇到各种故障,给生产进程带来延误和成本增加。为了应对这一挑…...

分布式链路追踪 —— 基于Dubbo的traceId追踪传递

文章目录 原文链接RpcContext 上下文对象Dubbo 过滤器(Filter)对象基于Dubbo的traceId追踪传递实现 原文链接 RpcContext 上下文对象 在实现 Dubbo 调用之间的链路跟踪之前,先简单了解 RpcContext 上下文对象和 Filter 过滤器对象&#xff…...

【uniapp小程序-上拉加载】

在需要上拉加载的页面的page.json上添加红框框里面的 onReachBottom() {if(this.commentCurrent<this.commentTotal){this.commentCurrent 1; this.commentList();this.status loading;}else{this.status ;} }, methods:{commentList(){let params {courseid:this.cour…...

ubuntu添加路由

ip route show 查看当前路由表 sudo ip route add /mask via 添加一条路由 目标ip 1.1.1.1/100 下一跳 2.2.2.2 sudo ip route add 1.1.1.1/100 via 2.2.2.2 dev ens160 proto static metric 100这是一条Linux命令&#xff0c;用于添加一个静态路由。具体含义如下&#xff1…...

python图像二值化处理

目录 1、双峰法 2、P参数法 3、迭代法 4、OTSU法 图像的二值化处理是将图像上的像素点的灰度值设置为0或255&#xff0c;也就是将整个图像呈现出明显的只有黑和白的视觉效果。二值化是图像分割的一种最简单的方法&#xff0c;可以把灰度图像转换成二值图像。具体实现是将大…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...