Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

append! Vs push! in Julia

Tags:

julia

In Julia, you can permanently append elements to an existing vector using append! or push!. For example:

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

But, what is the difference between append! and push!? According to the official doc it's recommended to:

"Use push! to add individual items to a collection which are not already themselves in another collection. The result of the preceding example is equivalent to push!([1, 2, 3], 4, 5, 6)."

So this is the main difference between these two functions! But, in the example above, I appended individual elements to an existing vector using append!. So why do they recommend using push! in these cases?

like image 328
Shayan Avatar asked Feb 25 '26 13:02

Shayan


1 Answers

append!(v, x) will iterate x, and essentially push! the elements of x to v. push!(v, x) will take x as a whole and add it at the end of v. In your example there is no difference, since in Julia you can iterate a number (it behaves like an iterator with length 1). Here is a better example illustrating the difference:

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

In this example, when using push!, x and y becomes elements of v, but when using append! the elements of x and y become elements of v.

like image 64
fredrikekre Avatar answered Feb 28 '26 07:02

fredrikekre



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!