【问题标题】:How to initialize an array with NamedTuples in Julia 1.6.0?如何在 Julia 1.6.0 中使用 NamedTuples 初始化数组?
【发布时间】:2021-04-27 21:30:14
【问题描述】:

我可以用Array{Tuple{Int, Int}}(undef, 10) 初始化一个元组数组。

但是,我不能使它适用于命名元组。有谁知道我该怎么做?

提前致谢!

【问题讨论】:

    标签: arrays julia namedtuple


    【解决方案1】:

    这就是这样做的方法(我知道您想要一个未初始化的 NamedTuples 数组具有具体类型):

    julia> Array{NamedTuple{(:a, :b), Tuple{Int64, Float64}}}(undef, 10)
    10-element Vector{NamedTuple{(:a, :b), Tuple{Int64, Float64}}}:
     (a = 257472272, b = 1.272082044e-315)
     (a = 257472272, b = 1.272082044e-315)
     (a = 257472272, b = 1.272082044e-315)
     (a = 257472272, b = 1.272082044e-315)
     (a = 257472272, b = 1.272082044e-315)
     (a = 257472272, b = 2.156699073e-315)
     (a = 257472272, b = 1.272082044e-315)
     (a = 257472272, b = 2.15670018e-315)
     (a = 257472272, b = 1.272082044e-315)
     (a = 257472272, b = 1.272082044e-315)
    
    julia> Array{NamedTuple{(:a, :b), Tuple{Int64, String}}}(undef, 10)
    10-element Vector{NamedTuple{(:a, :b), Tuple{Int64, String}}}:
     #undef
     #undef
     #undef
     #undef
     #undef
     #undef
     #undef
     #undef
     #undef
     #undef
    

    【讨论】:

    • 不应该是Vector而不是Array吗?
    • 两者都可以。 Array 采用第二个参数来确定输出的维数,请参见 boot.jl 中第 462 行附近的代码。我使用 Array 作为问题使用 Array 并没有专门询问向量,而是询问数组一般。
    • 你也可以使用typeof:Array{typeof((a=1,b=2))}(undef,10)
    • @AndrejOskin Vector{T} 只是Array{T,1} 的别名。数组的维数是从构造函数的第二个或可变参数中推断出来的;它可以是NTuple{Integer,N}Varargs{Integer,N},在这两种情况下,数组的维数都是N。所以10(10,) 作为第二个参数都创建一个一维数组,10, 11(可变参数)和(10, 11)(二元组)都将创建一个二维数组,等等。
    猜你喜欢
    • 2013-12-23
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多