Board logo

标题: [原创教程] julia与python中的列表解析.jl [打印本页]

作者: codegay    时间: 2016-3-16 09:33     标题: julia与python中的列表解析.jl

本帖最后由 codegay 于 2016-3-16 10:37 编辑

julia与python中的列表解析.jl
  1. #=julia与python中的列表解析.jl
  2. 2016年3月16日 07:30:47 codegay
  3. julia是一门很年轻的科学计算语言
  4. julia文档 https://julia-zh-cn.readthedocs.org/zh_CN/latest/
  5. 初学python几个月,初学julia才几天,理解与认识不到位,
  6. 如发现有误的地方,请指出,谢谢。
  7. =#
  8. #=
  9. 在python使用列表解析,感觉比较方便:
  10. [r for r in range(10)]
  11. 可以使用if 过滤元素:
  12. [r for r in range(10) if r%2==0]
  13. 支持else,但是需要写成这样:
  14. [r if r%2==0 else r**2 for r in range(10)]
  15. 我再次看到这篇文章:http://www.swmemo.com/551.html
  16. 发现python的列表解析居然还能写成这样,我一脸精呆:
  17. [ a**2 if a<20 else a*2 for a in range(30) if len(str(a))>1]
  18. =#
  19. #以下julia这几种写法其结果等效的,都是生成1到10的数组:
  20. #交互模式中可以使用[1:10],在程序中这样写运行后会有提示。
  21. d2=[r for r=1:10]
  22. println(d2)
  23. d3=[r for r in 1:10]
  24. println(d3)
  25. #julia的列表解析也可以调用函数
  26. [run(`cmd /c echo 今天周"$r"了`) for r=1:5]
  27. #但是到目前版本0.4.3还不支持类似python的if 条件判断
  28. #可以使用filter()和filter!()进行过滤
  29. #以下例子是读取D盘的目录,过滤排除掉f中的目录
  30. d=readdir("d:/")
  31. f=["快盘","AV","\$RECYCLE.BIN","temp","System Volume Information"]
  32. #$是特殊字符,需要加\转义
  33. #使用filter过滤排除目录
  34. for r in f
  35.   d=filter(x -> x!=r,d)
  36. end
  37. #以上正常的写法,以下是列表解析的写法.列表解析中可以调用函数对不对?即学即用可以改成如下代码:
  38. [filter!(x->x!=r,d) for r in f]
  39. #参考手册中的 . 按位操作符,还有以下这样的写法:
  40. d=d[d.!="快盘"]
  41. #依此类推吧...
  42. d=d[d.!="AV"]
  43. #经过测试,与python不同,julia中的列表解析支持符值语句,所以列表解析可以写成像下面这样
  44. [d=d[d.!=r] for r in f] #与[filter!(x->x!=r,d) for r in f]结果等效
复制代码

作者: codegay    时间: 2016-3-16 10:44

哈哈,这逼装定了。牛人。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2