在Julia 1.0+中执行for循环有几种不同的方法?

log*_*ick 2 julia

我正在寻找在Julia中编写循环的不同方式!我知道这是一个基本问题,但我想知道有哪些不同的选择,以及在性能方面是否有优点/缺点。

Lyn*_*ite 5

对于循环

优点:完全灵活可以突破并继续

缺点:不返回,必须在开始时指定迭代器

While循环

优点:完全灵活可以突破并继续

缺点:如果必须手动处理迭代器,则不会返回

标签+转到

请不要将此用于循环

生成器理解/向量理解

Pro:有返回值,继续用filter子句表示,以惰性(生成器)和热切形式(向量)出现,可以创建多维返回值

缺点:长久以来都很难看,不间断

广播

优点:快速表达多个输入的转换,具有返回值,输出结构与应有的匹配。可以仅用点表示,并支持循环融合。

缺点:没有中断就没有规律。编写主体意味着编写函数。将要广播的东西打包成标量 Ref有点难看

映射/ pmap /异步映射

以do-block形式编写

优点:可以轻松更改以分布式或异步方式运行,具有返回值

缺点:不休息,不继续

foreach 功能

它很像map,但是没有返回值。因此省去分配。

除了相同的优缺点