📜  Julia 中的数组字面量

📅  最后修改于: 2022-05-13 01:55:17.947000             🧑  作者: Mango

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]]