【问题标题】:How to append to an empty list in Julia?如何附加到 Julia 中的空列表?
【发布时间】:2023-01-25 20:36:39
【问题描述】:

我想创建一个空列表并逐渐用元组填充它。我尝试了以下方法,但每次都返回一个错误。我的问题是:如何将元素追加或添加到空数组?

我的尝试:

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

【问题讨论】:

  • 试试append!(A, (2,5))append not defined表示没有append的功能。
  • 看看this

标签: julia


【解决方案1】:

你实际上并不想追加,你想要元素到你的向量中。为此,请使用函数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)

对于字符串元组的向量,这样做:

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

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

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

B = Vector{Tuple{String, String}}

它不创建向量,而是创建一个类型变量.创建一个实例你可以写例如其中之一:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-21
    • 2020-07-26
    • 2018-10-09
    • 2017-10-20
    相关资源
    最近更新 更多