如何在 Julia 中追加到空列表?

Rai*_*bow 0 julia

我想创建一个空的 lsit 并逐渐用元组填充它。我已尝试以下操作,但每个操作都返回错误。我的问题是:如何向空数组追加或添加元素?

我的尝试:

A = []
A.append((2,5))   # return Error type Array has no field append
append(A, (2,5))  # ERROR: UndefVarError: append not defined

B =  Vector{Tuple{String, String}}
# same error occues
Run Code Online (Sandbox Code Playgroud)

DNF*_*DNF 5

您实际上不想追加,而是想将元素入向量中。为此,请使用该函数push!(尾随!表示该函数修改其输入参数之一。这只是一种命名约定,!不执行任何操作)。

我还建议创建一个类型化向量而不是A = [],它的Vector{Any}性能较差。

julia> A = Tuple{Int, Int}[]
Tuple{Int64, Int64}[]

julia> push!(A, (2,3))
1-element Vector{Tuple{Int64, Int64}}:
 (2, 3)

julia> push!(A, (11,3))
2-element Vector{Tuple{Int64, Int64}}:
 (2, 3)
 (11, 3)
Run Code Online (Sandbox Code Playgroud)

对于字符串元组向量,请执行以下操作:

julia> B = Tuple{String, String}[]
Tuple{String, String}[]

julia> push!(B, ("hi", "bye"))
1-element Vector{Tuple{String, String}}:
 ("hi", "bye")
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您的代码中的这一行是错误的:

B = Vector{Tuple{String, String}}
Run Code Online (Sandbox Code Playgroud)

它不创建向量,而是创建类型变量。要创建实例,您可以编写以下内容之一:

B = Tuple{String, String}[]
B = Vector{Tuple{String,String}}()  # <- parens necessary to construct an instance
Run Code Online (Sandbox Code Playgroud)

使用符号也可以很方便NTuple

julia> NTuple{2, String} === Tuple{String, String}
true

julia> NTuple{3, String} === Tuple{String, String, String}
true
Run Code Online (Sandbox Code Playgroud)