gpt4 book ai didi

arrays - Julia:不同类型的数组

转载 作者:行者123 更新时间:2023-12-03 13:45:43 25 4
gpt4 key购买 nike

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/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com