我想做这个 :
a = [1,2,3,4,5]
print(a[:2])
Run Code Online (Sandbox Code Playgroud)
输出是
[1, 2]
Run Code Online (Sandbox Code Playgroud)
如何在Julia中做同样的事情?但是我a
的类型是:Array {Array {Float64,1},1}
假设您有:
julia> x = [[i] for i in 1.0:5.0]
5-element Array{Array{Float64,1},1}:
[1.0]
[2.0]
[3.0]
[4.0]
[5.0]
Run Code Online (Sandbox Code Playgroud)
(这等效于您上面编写的内容,但具有您要求的类型)。
您可以x
通过传递切片的第一个和最后一个索引进行切片。上限和下限都将包括在内(还请注意,Julia使用基于1的索引):
julia> x[1:2]
2-element Array{Array{Float64,1},1}:
[1.0]
[2.0]
julia> x[2:4]
3-element Array{Array{Float64,1},1}:
[2.0]
[3.0]
[4.0]
Run Code Online (Sandbox Code Playgroud)
您可以end
用来指示收藏结束:
julia> x[3:end]
3-element Array{Array{Float64,1},1}:
[3.0]
[4.0]
[5.0]
Run Code Online (Sandbox Code Playgroud)
以上操作创建了一个新向量。如果您更喜欢一个视图,请输入:
julia> @view x[2:4]
3-element view(::Array{Array{Float64,1},1}, 2:4) with eltype Array{Float64,1}:
[2.0]
[3.0]
[4.0]
Run Code Online (Sandbox Code Playgroud)
要么
julia> view(x, 2:4)
3-element view(::Array{Array{Float64,1},1}, 2:4) with eltype Array{Float64,1}:
[2.0]
[3.0]
[4.0]
Run Code Online (Sandbox Code Playgroud)
区别在于使用@view
宏仍可以使用end
,例如@view x[2:end]
,但是view
函数不支持它。