julia - 在 Julia 中初始化锯齿状数组
问题描述
我是朱莉娅的新手。我正在尝试在第一维中初始化一个已知大小为 K 的锯齿状数组,在第二维中初始化一个未知大小。
我目前这样做的方式是
arr = Array{Array{Int}}(undef, K)
for i in 1:K
arr[i] = []
end
# and then push! elements to arr[k] if the element is in category k.
我们能以更好的方式做到这一点吗?
解决方案
我认为最简单的写法是:
arr = [Int[] for _ in 1:K]
你也可以写(我将这些作为练习展示,因为我通常会使用理解):
arr = map(_ -> Int[], 1:K)
或者
arr = (_ -> Int[]).(1:K)
一个应该避免的常见错误是:
arr = fill(Int[], K)
因为那么每个元素arr
都是完全相同的向量,这是您不想要的。例如
julia> arr = fill(Int[], K)
5-element Array{Array{Int64,1},1}:
[]
[]
[]
[]
[]
julia> push!(arr[1], 1)
1-element Array{Int64,1}:
1
julia> arr
5-element Array{Array{Int64,1},1}:
[1]
[1]
[1]
[1]
[1]
推荐阅读
- node.js - 如何添加到集合顶部/从集合底部删除(猫鼬)?
- c# - 使用选择元素 ASP.NET Core MVC 中的属性保存父项和子项
- python - 在 Flask-sqlalchemy 中按订单号在 db 中对数据进行排序
- jitsi - 如果主持人设置了会议密码,Jibri 将无法录制
- python-3.x - 算法 python3 时间效率
- python - 根据条件在列中查找值
- c# - 我如何进行异步数字排序应用程序 WPF
- javascript - 为什么我不能让我的页面附加文本并出现在我的 HTML 页面上?
- c - Visual Studio 中的 ASCII 字符看起来很奇怪
- python - 使用python将嵌套的json文件更改为数据框