julia> {}
0-element Array{Any,1}
is like python's arrays in that it can hold values of heterogenous types,
and you can grow it with push!, e.g.
julia> a = {}
0-element Array{Any,1}
julia> push!(a, "grapes")
1-element Array{Any,1}:
"grapes"
julia> push!(a, 3)
2-element Array{Any,1}:
"grapes"
3
If you know the type of all the things you'll be putting in your container,
you will get better performance/memory efficiency with a typed array.
julia> b = Float64[]
0-element Array{Float64,1}
julia> push!(b, 1.0)
1-element Array{Float64,1}:
1.0
julia> push!(b, NaN)
2-element Array{Float64,1}:
1.0
NaN
I think in either case, Julia is smart about growing the array by the right
amount at the right time to get O(1) ammortized push!(), but if you have a
guess about the eventual size of your array, you can help Julia out with
`sizehint`.
julia> sizehint(b, 100000)
You don't have to be exactly right with sizehint--the worst that will
happen is that you will use a little more memory than you needed to, or the
array will have to be dynamically grown more often than it had to be. For
this, I am most grateful. In Matlab, your choices are, AFAICT, 1) know the
exact size of your container correctly ahead of time, 2) have terrible
performance, or 3) allocate something that's definitely bigger than you
need, and then keep track of how much of it you've used yourself and throw
away the excess at the end.
On Monday, August 4, 2014 4:16:27 PM UTC-7, Neal Becker wrote:
>
> What would be similar to python list type? A container that has an
> efficient
> append. A common use is construct an empty list, then grow it by calling
> append.
>
>