[英]What are Python-Style List Comprehensions and Generators Considered in Julia by Core Julia Devs?
如果我在Julia 1.0.0在线文档中搜索list
,则第一个匹配项是:
可以通过在列表中的每个项目之前添加*,+或-来编写无序列表。
这是一个主题为“ Markdown语法”的主题,显然与Python样式列表无关。
另一个击中点,进一步下降的是:
与Python的显着差异(部分)
我没有看到本节list
提到的单词list
。
搜索“列表理解”,将第10个匹配列为:
理解力(节)
从...开始,
理解为构造数组提供了一种通用而强大的方法。
提到数组似乎暗示可以使用Julia数组完成Python样式的列表理解。
第一个标题是生成器表达式
也可以在不包含方括号的情况下编写理解,从而产生称为生成器的对象。
这听起来很像Python风格的生成器。
Julia的开发人员是否认为Julia的数组(1-dim)本质上等同于Python列表?
TL; DR:是的,但是速度更快。
朱莉娅(Julia)的联合创始人@StefanKarpinski 在这里发表了以下评论
另一个区别是您在Python中使用了一个集合,而在Julia中使用了一个数组(Python称之为“列表”)
因此,根据Stefan所说,“一个数组”(可能表示一维数组)是“ Python称为“列表”的意思”
举个简单的例子,假设我们要找到乘积P
,它具有一千万个比率R
,其中每个项的分子为4n^2
,并且每个项的分母都比分子小一个R = num/(num - 1)
,其中n
= 1到1千万。
无需尝试进行任何形式的优化,这就是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。
朱莉娅2 * n
的2n
是一个不错的功能。 例如,尝试2P
:
julia> 2P
3.1415925750808533
看这里 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.