数据结构【1】:数组专题
一、定义
数组是编程中一种强大的数据结构,它允许您存储和操作相同类型元素的集合。在 Python 中,数组是通过数组模块创建的,该模块提供了一个简单的接口来创建、操作和处理数组。
二、创建数组
在 Python 中,可以使用内置的 array 模块或第三方的 NumPy 库来创建和处理数组。
- array 模块提供了一种创建和处理数组的简单方式,可以创建固定长度的数组,并指定数据类型。
- 在 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)
- 使用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 过滤器对象ÿ…...
【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命令,用于添加一个静态路由。具体含义如下࿱…...
python图像二值化处理
目录 1、双峰法 2、P参数法 3、迭代法 4、OTSU法 图像的二值化处理是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果。二值化是图像分割的一种最简单的方法,可以把灰度图像转换成二值图像。具体实现是将大…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...
