# 数组索引

Syslab 中的每个变量都是一个可包含许多数字的数组。如果要访问数组的选定元素,请使用索引。

以 4×4 幻方矩阵 A 为例:

A = magic(4)
1
A =
4×4 Matrix{Int64}:
 16   2   3  13
  5  11  10   8
  9   7   6  12
  4  14  15   1
1
2
3
4
5
6

引用数组中的特定元素有两种方法。最常见的方法是指定行和列下标,例如

A[4, 2]
1
ans = 14
1

另一种方法不太常用,但有时非常有用,即使用单一下标按顺序向下遍历每一列:

A[8]
1
ans = 14
1

使用单一下标引用数组中特定元素的方法称为线性索引

如果尝试在赋值语句右侧引用数组外部元素,Syslab 会引发错误。

  test = A[4,5]

BoundsError: attempt to access 4×4 Matrix{Int64} at index [4, 5]
1
2
3

不过,您可以在赋值语句左侧指定当前维外部的元素。数组大小会增大以便容纳新元素。

A = [A zeros(Int, 4)]
A[4, 5] = 17
1
2
A =
4×5 Matrix{Int64}:
 16   2   3  13   0
  5  11  10   8   0
  9   7   6  12   0
  4  14  15   1  17
1
2
3
4
5
6

要引用多个数组元素,请使用冒号运算符,这使您可以指定一个格式为 start:end 的范围。例如,列出 A 前三行及第二列中的元素:

A[1:3, 2]
1
ans =
3-element Vector{Int64}:
  2
 11
  7
1
2
3
4
5

单独的冒号(没有起始值或结束值)指定该维中的所有元素。例如,选择 A 第三行中的所有列:

A[3, :]
1
ans =
5-element Vector{Int64}:
  9
  7
  6
 12
  0
1
2
3
4
5
6
7

此外,冒号运算符还允许您使用较通用的格式 start:step:end 创建等距向量值。

B = Vector(0:10:100)
1
B =
11-element Vector{Int64}:
   0
  10
  20
  30
  40
  50
  60
  70
  80
  90
 100
1
2
3
4
5
6
7
8
9
10
11
12
13

如果省略中间的步骤(如 start:end 中),Syslab 会使用默认步长值 1。