YStudio Y++

数组操作(基础支持库)

Y++ / YStudio 开发文档 · 一点滴

路径:支持库 → 基础支持库 → 数组操作 / 二维三维数组。

声明语法见 language.md §4.1;遍历见 basic-flow.md。

硬约束

  1. 扁平命令:数组长度(列表),无对象前缀。
  2. 一维数组下标从 0;文本分割 等得到的数组同样从 0。
  3. 数组查找 未找到返回 -1(不要和 寻找文本 的 0 混淆)。
  4. 数组添加 在末尾追加;数组插入 在指定下标插入(其后元素后移)。
  5. 二维/三维优先用 [][] 下标;数组_取 为命令式备选。

声明:什么是「整数数组 / 文本数组」

面板或签名里的 整数数组 = 整数类型的数组(一个变量);文本数组 = 文本类型的数组。不是「整数」「数组」两个变量。

类型说法 声明示例 含义
整数数组 整数 arr[] = [] 变量名 arr,元素为整数
文本数组 文本 list[] = [] 变量名 list,元素为文本
接收返回值 整数 索引[] = 取选中索引() 右侧若返回整数数组,左侧用 整数 名[]

[] 必须写在变量名后;禁止 整数[] arr。勿写 整数 数组(那是名叫「数组」的单个整数)。


快速开始

整数 arr[] = []
数组添加(arr, 10)
数组添加(arr, 20)
数组插入(arr, 1, 15)
输出(数组长度(arr))
输出(数组查找(arr, 20))

文本 list[] = ["甲", "乙"]
输出(数组长度(list))

整数 矩阵[][] = 数组_创建二维(2, 3, 0)
矩阵[0][1] = 5
输出(数组_行数(矩阵))

数组操作

本分类共 38 条。

数组交换

  • 签名:无 数组交换(通用数组 数组, 整数 索引一, 整数 索引二)
  • 说明:交换同一数组中两个下标位置的元素(原地修改,不交换两个数组)。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│整数 索引一: 从 0 起。
  • 参数三│整数 索引二: 从 0 起。

数组交集

  • 签名:通用 数组交集(通用数组 数组, 通用数组 数组二)
  • 说明:返回两个数组的交集(新数组,保留第一个数组中的出现顺序,去重)。
  • 参数一│通用数组 数组: 第一个数组。
  • 参数二│通用数组 数组二: 第二个数组。

数组创建

  • 签名:通用 数组创建(整数 长度, 通用 默认值)
  • 说明:创建指定长度、以默认值填充的新数组。
  • 参数一│整数 长度: 元素个数。
  • 参数二│通用 默认值: 每个元素的初值。

数组删除

  • 签名:无 数组删除(通用数组 数组, 整数 索引)
  • 说明:删除指定索引处的元素。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│整数 索引: 从 0 开始。

数组包含

  • 签名:逻辑 数组包含(通用数组 数组, 通用 值)
  • 说明:判断数组中是否包含指定值。
  • 参数一│通用数组 数组: 源数组。
  • 参数二│通用 值: 欲查找的值。

数组去重

  • 签名:无 数组去重(通用数组 数组)
  • 说明:去除数组中重复元素(原地修改)。
  • 参数一│通用数组 数组: 目标数组。

数组反转

  • 签名:无 数组反转(通用数组 数组)
  • 说明:将数组元素顺序反转。
  • 参数一│通用数组 数组: 目标数组。

数组取值

  • 签名:通用 数组取值(通用数组 数组, 整数 索引)
  • 说明:按索引取出数组元素(索引从 0 起)。
  • 参数一│通用数组 数组: 源数组。
  • 参数二│整数 索引: 从 0 开始的下标。

数组合并

  • 签名:无 数组合并(通用数组 数组, 通用数组 数组二)
  • 说明:将第二个数组全部追加到第一个数组末尾。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│通用数组 数组二: 源数组。

数组填充

  • 签名:无 数组填充(通用数组 数组, 通用 值, [整数 起始=0], [整数 长度])
  • 说明:将一段范围设为同一值。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│通用 值: 填充值。
  • 参数三│[整数 起始=0]: 起始下标。
  • 参数四│[整数 长度]: 填充个数;省略则到末尾。

数组复制

  • 签名:通用 数组复制(通用数组 数组)
  • 说明:复制数组,返回一个新数组。
  • 参数一│通用数组 数组: 源数组。

数组对调

  • 签名:无 数组对调(通用数组 数组, 通用数组 数组二)
  • 说明:交换两个数组的全部内容(长度与元素一并对调,需同类型数组)。
  • 参数一│通用数组 数组: 第一个数组。
  • 参数二│通用数组 数组二: 第二个数组。

数组差集

  • 签名:通用 数组差集(通用数组 数组, 通用数组 数组二)
  • 说明:返回在第一个数组中、但不在第二个数组中的元素(新数组,去重)。
  • 参数一│通用数组 数组: 被减数组。
  • 参数二│通用数组 数组二: 要排除的元素集合。

数组平均值

  • 签名:小数 数组平均值(通用数组 数组)
  • 说明:对整数/小数数组求算术平均值。
  • 参数一│通用数组 数组: 数值数组。

数组序列

  • 签名:通用 数组序列(整数 长度, [整数 起始=0], [整数 步长=1])
  • 说明:生成等差整数序列,返回新数组(不修改已有变量)。
  • 参数一│整数 长度: 元素个数。
  • 参数二│[整数 起始=0]: 首项值。
  • 参数三│[整数 步长=1]: 相邻两项之差。

数组弹出

  • 签名:通用 数组弹出(通用数组 数组)
  • 说明:删除并返回最后一个元素。
  • 参数一│通用数组 数组: 目标数组。

数组截取

  • 签名:通用 数组截取(通用数组 数组, 整数 起始, [整数 长度])
  • 说明:截取数组片段,返回新数组(不修改原数组)。
  • 参数一│通用数组 数组: 源数组。
  • 参数二│整数 起始: 从 0 起的起始下标。
  • 参数三│[整数 长度]: 截取个数;省略则到末尾。

数组打乱

  • 签名:无 数组打乱(通用数组 数组)
  • 说明:随机打乱数组元素顺序(原地修改)。
  • 参数一│通用数组 数组: 目标数组。

数组排序

  • 签名:无 数组排序(通用数组 数组, [整数 方式=1])
  • 说明:对数组元素排序。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│[整数 方式=1]: 1=升序,2=降序。

数组插入

  • 签名:无 数组插入(通用数组 数组, 整数 索引, 通用 值)
  • 说明:在指定索引处插入元素,其后元素后移。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│整数 索引: 从 0 开始。
  • 参数三│通用 值: 新元素。

数组旋转

  • 签名:无 数组旋转(通用数组 数组, 整数 步数)
  • 说明:将数组元素循环移位(正数向左移,负数向右移,原地修改)。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│整数 步数: 移位步数,超出长度会自动取模。

数组是否为空

  • 签名:逻辑 数组是否为空(通用数组 数组)
  • 说明:判断数组是否不含任何元素。
  • 参数一│通用数组 数组: 待判断数组。

数组最大

  • 签名:通用 数组最大(通用数组 数组)
  • 说明:返回数值数组中的最大元素。
  • 参数一│通用数组 数组: 数值数组。

数组最小

  • 签名:通用 数组最小(通用数组 数组)
  • 说明:返回数值数组中的最小元素。
  • 参数一│通用数组 数组: 数值数组。

数组末项

  • 签名:通用 数组末项(通用数组 数组)
  • 说明:返回最后一个元素;空数组时返回类型默认值。
  • 参数一│通用数组 数组: 源数组。

数组查找

  • 签名:整数 数组查找(通用数组 数组, 通用 值, [整数 起始索引=0])
  • 说明:查找值在数组中首次出现的索引。
  • 参数一│通用数组 数组: 源数组。
  • 参数二│通用 值: 欲查找的值。
  • 参数三│[整数 起始索引=0]: 从第几个元素开始找(从 0 起)。

数组查找全部

  • 签名:通用 数组查找全部(通用数组 数组, 通用 值, [整数 起始索引=0])
  • 说明:查找所有等于指定值的元素下标,返回整数数组。
  • 参数一│通用数组 数组: 源数组。
  • 参数二│通用 值: 要查找的值。
  • 参数三│[整数 起始索引=0]: 从哪个下标开始查找。

数组求和

  • 签名:通用 数组求和(通用数组 数组)
  • 说明:对整数/小数数组元素求和。
  • 参数一│通用数组 数组: 数值数组。

数组添加

  • 签名:无 数组添加(通用数组 数组, 通用 值)
  • 说明:在数组末尾追加一个元素。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│通用 值: 新元素。

数组清空

  • 签名:无 数组清空(通用数组 数组)
  • 说明:删除数组中全部元素。
  • 参数一│通用数组 数组: 目标数组。

数组相等

  • 签名:逻辑 数组相等(通用数组 数组, 通用数组 数组二)
  • 说明:判断两个数组长度与元素是否完全一致。
  • 参数一│通用数组 数组: 第一个数组。
  • 参数二│通用数组 数组二: 第二个数组。

数组置值

  • 签名:无 数组置值(通用数组 数组, 整数 索引, 通用 值)
  • 说明:设置数组指定位置的元素。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│整数 索引: 从 0 开始。
  • 参数三│通用 值: 与数组元素类型一致的值。

数组计数

  • 签名:整数 数组计数(通用数组 数组, 通用 值)
  • 说明:统计数组中等于指定值的元素个数。
  • 参数一│通用数组 数组: 源数组。
  • 参数二│通用 值: 要统计的值。

数组调整长度

  • 签名:无 数组调整长度(通用数组 数组, 整数 新长度, [通用 填充值=0])
  • 说明:改变数组长度:不足时以填充值补位,超出时截断末尾。
  • 参数一│通用数组 数组: 目标数组。
  • 参数二│整数 新长度: 调整后的元素个数。
  • 参数三│[通用 填充值=0]: 扩容时新增位的默认值。

数组连接

  • 签名:文本 数组连接(通用数组 数组, [文本 分隔符=""])
  • 说明:将文本数组元素用分隔符拼成一条文本。
  • 参数一│通用数组 数组: 文本数组。
  • 参数二│[文本 分隔符=”“]: 元素之间的分隔文本。

数组长度

  • 签名:整数 数组长度(通用数组 数组)
  • 说明:返回数组的元素个数。
  • 参数一│通用数组 数组: 已声明的整数/文本/小数/逻辑数组。

数组随机项

  • 签名:通用 数组随机项(通用数组 数组)
  • 说明:随机返回数组中的一个元素。
  • 参数一│通用数组 数组: 源数组。

数组首项

  • 签名:通用 数组首项(通用数组 数组)
  • 说明:返回第一个元素;空数组时返回类型默认值。
  • 参数一│通用数组 数组: 源数组。

二维三维数组

本分类共 7 条。

数组_列数

  • 签名:整数 数组_列数(数组, 整数 行索引 [, 整数 层索引])
  • 说明:二维:(数组, 行)。三维:(数组, 层, 行),返回该层该行的列数。
  • 参数一│数组: 二维或三维数组。
  • 参数二│行索引或层索引: 从 0 起。
  • 参数三│[行索引]: 三维时指定行,从 0 起。

数组_创建三维

  • 签名:通用 数组_创建三维(整数 层数, 整数 行数, 整数 列数, 通用 填充值)
  • 说明:创建指定层/行/列的三维数组并用填充值初始化。
  • 参数一│层数: 最外层长度。
  • 参数二│行数: 每层行数。
  • 参数三│列数: 每行列数。
  • 参数四│填充值: 整数/小数/逻辑/文本。

数组_创建二维

  • 签名:通用 数组_创建二维(整数 行数, 整数 列数, 通用 填充值)
  • 说明:创建指定行列的二维数组并用填充值初始化。返回新数组。
  • 参数一│行数: 外层长度。
  • 参数二│列数: 每行列数。
  • 参数三│填充值: 整数/小数/逻辑/文本。

数组_取

  • 签名:通用 数组_取(数组, 整数 索引一 [, 整数 索引二 [, 整数 索引三]])
  • 说明:按索引读取元素。二维:数组_取(矩阵, 行, 列);三维:数组_取(立体, 层, 行, 列)。也可直接用 [] 下标。
  • 参数一│数组: 二维或三维数组。
  • 参数二│行或层: 从 0 起。
  • 参数三│[列或行]: 从 0 起。
  • 参数四│[列]: 三维时的列索引。

数组_层数

  • 签名:整数 数组_层数(数组 三维数组)
  • 说明:返回三维数组最外层长度(层数)。二维数组请用 数组_行数。
  • 参数一│数组: 三维数组。

数组_行数

  • 签名:整数 数组_行数(数组 二维或三维数组)
  • 说明:返回二维/三维数组最外层长度(行数或层数)。一维数组请用 数组长度。
  • 参数一│数组: 二维或三维数组。

数组_面行数

  • 签名:整数 数组_面行数(数组 三维数组, 整数 层索引)
  • 说明:返回三维数组指定层内的「面」数量(该层有多少行)。
  • 参数一│数组: 三维数组。
  • 参数二│层索引: 从 0 起。

易错对照

错误 正确
数组查找未找到当 0 返回 -1
下标从 1 从 0
二维只用一维命令 用 数组_* / [][]

相关

文本操作 · 字典 · 多线程