如何在Julia中自动缩小Vector或Array的元素类型?
自动缩小Any类型Vector的元素类型
要让Julia自动为Vector{Any}选择最合适的元素类型,有几种简洁的实现方式:
方法一:
promote搭配collectpromote会自动将所有元素提升至兼容的共同类型,再通过collect转换为Vector:julia> vec = Any[1, 2, 3.] 3-element Vector{Any}: 1 2 3.0 julia> collect(promote(vec...)) 3-element Vector{Float64}: 1.0 2.0 3.0方法二:用
promote_typeof指定目标类型
先通过promote_typeof(vec...)获取所有元素的最优共同类型,再转换为对应Vector:julia> Vector{promote_typeof(vec...)}(vec) 3-element Vector{Float64}: 1.0 2.0 3.0方法三:直接调用无类型参数的
convert
不指定具体类型时,convert(Vector, vec)会自动推导最优元素类型:julia> convert(Vector, vec) 3-element Vector{Float64}: 1.0 2.0 3.0
这些方法会根据元素实际类型自动选择最紧凑的兼容类型——比如例子里的元素会统一为Float64;如果是Any[1,2,3],则会自动转为Vector{Int64}。
内容的提问来源于stack exchange,提问作者Shayan
相关产品推荐
相关产品推荐

