附加!VS推!在朱莉娅

Sha*_*yan 9 julia

append!在 Julia 中,您可以使用或将元素永久附加到现有向量push!。例如:

julia> vec = [1,2,3]
3-element Vector{Int64}:
 1
 2
 3

julia> push!(vec, 4,5)
5-element Vector{Int64}:
 1
 2
 3
 4
 5

# or

julia> append!(vec, 4,5)
7-element Vector{Int64}:
 1
 2
 3
 4
 5
Run Code Online (Sandbox Code Playgroud)

append!但是,和 之间有什么区别push!根据官方文档,建议:

“使用push!将单个项目添加到一个集合中,而这些项目本身并不在另一个集合中。前面示例的结果相当于push!([1,2,3],4,5,6)。”

这就是这两个函数之间的主要区别!但是,在上面的示例中,我使用 . 将各个元素附加到现有向量中append!。那么为什么他们建议push!在这些情况下使用呢?

fre*_*kre 9

append!(v, x)将迭代x,本质上是topush!的元素。将作为一个整体并将其添加到 的末尾。在您的示例中没有区别,因为在 Julia 中您可以迭代一个数字(它的行为类似于长度为 1 的迭代器)。这是一个更好的例子来说明差异:xvpush!(v, x)xv

julia> v = Any[]; # Intentionally using Any just to show the difference

julia> x = [1, 2, 3]; y = [4, 5, 6];

julia> push!(v, x, y);

julia> append!(v, x, y);

julia> v
8-element Vector{Any}:
  [1, 2, 3]
  [4, 5, 6]
 1
 2
 3
 4
 5
 6
Run Code Online (Sandbox Code Playgroud)

在此示例中,当使用push!x和 时,y将成为 的元素v,而当使用和的append!元素时将成为 的元素。xyv