如果我在Julia 1.0.0在线文档中搜索list
,则第一个匹配项是:
可以通过在列表中的每个项目之前添加*,+或-来编写无序列表。
这是一个标题为“ Markdown语法”的主题,显然与Python样式列表无关。
另一个热门,更进一步的是:
与Python(部分)的显着差异
我没有看到本节中提到的list
一词。
搜索“列表理解”,将第10个匹配项设为:
理解(部分)
以
开始理解为构造数组提供了一种通用而强大的方法。
提到数组似乎暗示可以使用Julia数组完成Python样式的列表理解。
一个标题下方是 Generator Expressions
也可以在不包含方括号的情况下编写理解,从而产生称为生成器的对象。
这听起来很像Python风格的生成器。
Julia的开发人员是否认为Julia的数组(1-dim)本质上等同于Python列表?
答案 0 :(得分:0)
TL; DR:是,但是更快。
@StefanKarpinski,Julia的共同创建者,发表了以下评论here
另一个区别是您在Python中使用了一个集合,在Julia中使用了一个数组(Python称之为“列表”)
因此,根据Stefan所说,“数组”(可能表示一维数组)是“ Python称之为“列表”的东西”
举一个简单的例子,假设我们想找到乘积P
,具有一千万个比率,R
,其中每个项的分子为4n^2
,并且分母为每个项比分子R = num/(num - 1)
小1,其中n
= 1到1000万。
Julia 1.0.0中没有使用Python样式的列表推导,而无需尝试进行任何形式的优化:
julia> P = prod([4n^2/(4n^2 - 1) for n in 1:10_000_000])
1.5707962875230395
在Julia 1.0.0 REPL中运行此程序非常快,基本上在我的笔记本电脑上是瞬时的。这不是基准测试,但是运行类似的代码(针对Python修改)并在PyCharm的REPL中使用Python 3.6时,速度明显慢。
import numpy as np
P = np.prod([4*n**2/(4*n**2 - 1) for n in range(1, 10_000_001)])
P
1.5707962875404267
就视觉上而言,Julia的理解速度要快10倍以上。
朱莉娅的发电机呢?
只需删除prod
函数调用内的方括号即可:
julia> P = prod(4n^2/(4n^2 - 1) for n in 1:10_000_000)
1.5707962875404267
朱莉娅的答案在我的笔记本电脑上即时显示。
这不是Python和Julia之间的速度比较,因此在这一点上我将离开Python。
Julia的2n
的{{1}}是一个不错的功能。例如,尝试2 * n
:
2P
请参见here。