如何将值数组解包为函数参数?
例如,函数Iterators.product()以可变数量的迭代器作为参数,即
collect(Iterators.product(1:2, 3:5))
2×3 Array{Tuple{Int64,Int64},2}:
(1, 3) (1, 4) (1, 5)
(2, 3) (2, 4) (2, 5)
Run Code Online (Sandbox Code Playgroud)
给定一个迭代器数组,例如a=[1:2, 3:5],你如何在a不手动访问它的元素的情况下解包a[1](例如,当a事先不知道的长度时)?
我希望 Python 中有类似于星号运算符的东西(类似于Iterators.product(*a)),但我还没有找到类似的东西。
我以matlab的形式从我的系统中保存报告table().要显示这些表,我正在使用disp(myTable).当我只在shell中查看表时,这很好.
但是,现在我希望构建一个GUI,它将显示这些表以及图表和其他信息.我发现我可以通过静态文本GUI元素显示字符串
set(handles.staticText1, 'String', 'My text! Yay!').
但是,我无法弄清楚将保存为表格的数据转换为字符串的任何简单方法.
是否有一种在GUI中显示表格的简单方法,还是需要手动提取表格中的所有列?
编辑:好的,所以我找到了一种将表保存到字符串中的方法:
tableString=evalc('disp(table)')
但结果是一场灾难,看起来就像我在shell中获得的格式整齐的字符串.
如果可能,如何将文件从一个 WSL 实例直接移动到另一个实例?这在尝试新发行版时很有用,例如将 /home 从 Ubuntu 18.04 复制到 20.04。
我厌倦了通过资源管理器通过访问\\wsl$Windows 主机来执行此操作,它似乎无法可靠地传输所有文件并且总体上感觉不对。
当我不确定最终数组大小时,逐个元素构建 Julia 数组的最佳方法是什么?在我的问题中,我在单个 for 循环中构建数组。
到目前为止,我已经发现我可以推入数组或索引到预先分配的数组中:
using BenchmarkTools
function push_to_array!(array, N)
for i in 1:N
# some computation
push!(array, rand(Int64))
end
end
function fill_array!(array, N)
for i in 1:N
# some computation
array[i]=rand(Int64)
end
end
N = 100_000_000 # unknown in the real problem
empty = Vector{Int64}()
preallocated = Vector{Int64}(undef, 2*N) # 2*N represents some upper bound on N
@btime push_to_array!(empty, N)
# 28.272 s (6 allocations: 0 bytes)
@btime fill_array!(preallocated, N)
# 2.449 s (0 allocations: 0 bytes)
Run Code Online (Sandbox Code Playgroud)
因此,填充预先分配的数组比推送快得多,但是,这有点麻烦,因为我需要使用 …