Created
March 16, 2016 02:57
-
-
Save FGFW/e94c5340502586e6c58c to your computer and use it in GitHub Desktop.
julia与python中的列表解析.jl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #=julia与python中的列表解析.jl | |
| 2016年3月16日 07:30:47 codegay | |
| julia是一门很年轻的科学计算语言 | |
| julia文档 https://julia-zh-cn.readthedocs.org/zh_CN/latest/ | |
| 初学python几个月,初学julia才几天,理解与认识不到位, | |
| 如发现有误的地方,请指出,谢谢。 | |
| =# | |
| #= | |
| 在python使用列表解析,感觉比较方便: | |
| [r for r in range(10)] | |
| 可以使用if 过滤元素: | |
| [r for r in range(10) if r%2==0] | |
| 支持else,但是需要写成这样: | |
| [r if r%2==0 else r**2 for r in range(10)] | |
| 我再次看到这篇文章:http://www.swmemo.com/551.html | |
| 发现python的列表解析居然还能写成这样,我一脸精呆: | |
| [ a**2 if a<20 else a*2 for a in range(30) if len(str(a))>1] | |
| =# | |
| #以下julia这几种写法其结果等效的,都是生成1到10的数组: | |
| #交互模式中可以使用[1:10],在程序中这样写运行后会有提示。 | |
| d2=[r for r=1:10] | |
| println(d2) | |
| d3=[r for r in 1:10] | |
| println(d3) | |
| #julia的列表解析也可以调用函数 | |
| [run(`cmd /c echo 今天周"$r"了`) for r=1:5] | |
| #但是到目前版本0.4.3还不支持类似python的if 条件判断 | |
| #可以使用filter()和filter!()进行过滤 | |
| #以下例子是读取D盘的目录,过滤排除掉f中的目录 | |
| d=readdir("d:/") | |
| f=["快盘","AV","\$RECYCLE.BIN","temp","System Volume Information"] | |
| #$是特殊字符,需要加\转义 | |
| #使用filter过滤排除目录 | |
| for r in f | |
| d=filter(x -> x!=r,d) | |
| end | |
| #以上正常的写法,以下是列表解析的写法.列表解析中可以调用函数对不对?即学即用可以改成如下代码: | |
| [filter!(x->x!=r,d) for r in f] | |
| #参考手册中的 . 按位操作符,还有以下这样的写法: | |
| d=d[d.!="快盘"] | |
| #依此类推吧... | |
| d=d[d.!="AV"] | |
| #经过测试,与python不同,julia中的列表解析支持符值语句,所以列表解析可以写成像下面这样 | |
| [d=d[d.!=r] for r in f] #与[filter!(x->x!=r,d) for r in f]结果等效 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment