Julia 中的数组字面量
Julia 是一种高性能的动态编程语言,由于它具有高级语法,因此易于使用。每个人都可以免费使用。 Julia 对实现数组并没有给予太多关注,因此编译器的负载较小。 Julia 中的数组以多维网格表示,可以包含任何类型的数据。 Julia 允许我们不仅通过创建数组变量而且还通过字面量来创建数组。我们将在本文中讨论 Julia 提供的数组字面量的各种特性。
数组字面量
可以在 Julia 中直接构造数组,而无需使用方括号创建相应的变量,语法为 - [element1, element2, . . . ]。这将创建一个一维数组,其中元素是参数中用逗号分隔的元素,如下所示:
Julia
# Creating Array of four elements
[11, 22, 33, 44]
Julia
# Changing the type of the array
# to the promoted type of the elements
promote(12, 2.3, 4//5)
[12, 2.3, 4//5]
Julia
# Creating an empty array
[]
# Creating an array with different types of elements
[11, 3//5]
Julia
# No concatenation error occurs,
# but they are treated as elements
# for the array literal
[1:3, 4:7]
Julia
# Concatenation using semicolons
[1:3; 4:7]
Julia
# Concatenation using spacing
[1:2
3:5
6]
Julia
# Horizontal concatenation
[1:2 3:4 5:6]
# Elements can also be written in the inner braces
[[1,2] [3,4] [5,6]]
# Just normal numbers can also be concatenated
[11 22 33]
Julia
# Concatenating horizontally and
# vertically in an array literal
[2 4
6 8]
Julia
# Concatenating four elements horizontally
# and vertically in an array literal
[zeros(Int, 2, 2) [3; 6]
[7 8] 9]
Julia
# Creating an array literal
[[1 3] [2 4]]
# Creating a typed array literal of the type Int8
Int8[[1 3] [2 4]]
# Creating a typed array literal of the type Any
Any[[1 3] [2 4]]
数组字面量量的类型
数组的类型由其中存在的元素的类型决定。如果所有元素的类型相同,则数组类型将相同。但是如果它们不同,为了获得数组的确定类型,我们可以使用promote()函数将元素的类型转换为它们的提升类型。
朱莉娅
# Changing the type of the array
# to the promoted type of the elements
promote(12, 2.3, 4//5)
[12, 2.3, 4//5]
如果我们不执行此提升操作,则会生成一个可以容纳任何类型的数组,如下所示:
朱莉娅
# Creating an empty array
[]
# Creating an array with different types of elements
[11, 3//5]
数组串联
垂直串联
数组中元素的连接是通过在它们之间放置分号 ( ; ) 或换行来执行的。这些元素将垂直连接。但是如果在元素之间放置逗号而不是分号,Julia 只会将它们视为元素,如下所示:
朱莉娅
# No concatenation error occurs,
# but they are treated as elements
# for the array literal
[1:3, 4:7]
如上所述,我们用分号分隔元素以执行垂直连接:
朱莉娅
# Concatenation using semicolons
[1:3; 4:7]
我们也可以只用新行表示数组以垂直执行连接,如下所示:
朱莉娅
# Concatenation using spacing
[1:2
3:5
6]
水平串联
为了水平连接数组,我们在元素之间放置制表符或空格而不是逗号。如果我们不放置选项卡,Julia 会将整个参数视为一个元素。我们连接各种类型的元素,如范围元素、数组元素和普通数字,如下所示:
朱莉娅
# Horizontal concatenation
[1:2 3:4 5:6]
# Elements can also be written in the inner braces
[[1,2] [3,4] [5,6]]
# Just normal numbers can also be concatenated
[11 22 33]
多向串联
为了水平和垂直连接,我们可以在元素之间分别放置换行符和间距,而不用放置逗号,如下所示:
朱莉娅
# Concatenating horizontally and
# vertically in an array literal
[2 4
6 8]
下面的例子展示了使用zeros()函数在数组的二维空间中用零填充一些空间,通过放置分号垂直连接 3 和 6,垂直连接新行,连接 7 的间距, 8, 和 9 水平,最终产生一个 3×3 矩阵。
朱莉娅
# Concatenating four elements horizontally
# and vertically in an array literal
[zeros(Int, 2, 2) [3; 6]
[7 8] 9]
类型化数组字面量
可以使用以下语法生成特定类型的数组 – T[element1, element2, . . . ],其中 T 是您希望数组成为的类型。使用此语法实现数组会创建一个数组,该数组将类型初始化为其中的所有元素。下面的示例显示了 Int8 类型对数组元素的初始化,但我们也可以放入我们想要的任何其他类型。
朱莉娅
# Creating an array literal
[[1 3] [2 4]]
# Creating a typed array literal of the type Int8
Int8[[1 3] [2 4]]
# Creating a typed array literal of the type Any
Any[[1 3] [2 4]]