arrays - Julia:不同类型的数组

标签 arrays list initialization julia

Julia newbe 在这里,从 python 过渡。

所以,我想在 Python 中构建我称之为 list 的东西,由由列表组成的列表组成。就我而言,它是一个 1000 长的列表,其元素是 3 个列表的列表。

到目前为止,我已经这样做了:

BIG_LIST = collect(Array{Int64,1}[[],[],[]] for i in 1:1000)

当所有三个最内部的列表都由整数组成时,这达到了我的目的。
现在我需要其中 2 个是整数,而第三个是 Float。
这可能吗?我该怎么做?

如果您还可以更好地解释如何正确初始化这些对象,那就太好了。我知道收集不是这里的最佳选择。

请注意,3 个内部列表的长度在 3 个之间是相同的,但在此过程中可能会有所不同。

最佳答案

首先,如果您知道中间列表总是有 3 个元素,那么使用 Tuple types 可能会更好。对于那些。元组可以独立指定其元素的类型。所以这样的事情可能适合你的目的:

julia> l = [(Int64[], Int64[], Float64[]) for _ in 1:10]
10-element Array{Tuple{Array{Int64,1},Array{Int64,1},Array{Float64,1}},1}:
 ([], [], [])
 ([], [], [])
 ([], [], [])
 ([], [], [])
 ([], [], [])
 ([], [], [])
 ([], [], [])
 ([], [], [])
 ([], [], [])
 ([], [], [])

julia> push!(l[1][3], 5)
1-element Array{Float64,1}:
 5.0

julia> l
10-element Array{Tuple{Array{Int64,1},Array{Int64,1},Array{Float64,1}},1}:
 ([], [], [5.0])
 ([], [], [])   
 ([], [], [])   
 ([], [], [])   
 ([], [], [])   
 ([], [], [])   
 ([], [], [])   
 ([], [], [])   
 ([], [], [])   
 ([], [], [])   

这里需要注意一些细节,您可能会感兴趣:
  • 可以使用 T[] 构造空但有类型的列表, 其中 T是元素类型。
  • collect(f(i) for i in 1:n)本质上相当于一个简单的理解(就像你在 python 中习惯的那样):[f(i) for i in 1:n] .请注意,由于变量 i在这里不起作用,您可以将其替换为 _占位符,以便读者更直接地看到您实际上是在创建一个相似对象的集合(但不相同,因为它们不共享相同的底层内存;修改一个不会影响其他对象)。
  • 我不知道有什么更好的方法来初始化这样一个集合,我不认为使用 collect (或理解)在这里是个坏主意。对于相同对象的集合, fill 提供了一个有用的快捷方式,但它不适用于此处,因为所有子列表都将被链接。




  • 现在,如果所有内部子列表的长度相同,您可能希望切换到稍微不同的数据结构:元组向量的向量:
    julia> l2 = [Tuple{Int64,Int64,Float64}[] for _ in 1:10]
    10-element Array{Array{Tuple{Int64,Int64,Float64},1},1}:
     []
     []
     []
     []
     []
     []
     []
     []
     []
     []
    
    julia> push!(l2[2], (1,2,pi))
    1-element Array{Tuple{Int64,Int64,Float64},1}:
     (1, 2, 3.141592653589793)
    
    julia> l2
    10-element Array{Array{Tuple{Int64,Int64,Float64},1},1}:
     []                         
     [(1, 2, 3.141592653589793)]
     []                         
     []                         
     []                         
     []                         
     []                         
     []                         
     []                         
     []                         
    

    关于arrays - Julia:不同类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60418192/

    相关文章:

    c - 初始化结构时发生访问冲突

    c# - C# 中的 Var 初始化

    python - 如何在 Python 中显示列表元素的索引?

    java - 将不同的字符串数组添加到 List<String[]> 中,但返回相同的值

    c++ - 将添加的列初始化为可调整大小的二维 vector

    arrays - numpy.add.at 比就地添加慢?

    c# - 比较两个对象类型数组的值

    javascript - 循环遍历 2 个数组,并将一个数组中的值分配给第二个数组的每个匹配对象

    javascript - 从 json 数组 javascript 中获取元素

    c++ - 什么对我来说更好 : vector or list?