[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创代码] python统计0到n之间1的个数.py

  1. """
  2. python统计0到n之间1的个数.py
  3. http://www.acmerblog.com/count-ones-6202.html
  4. codegay 2016年4月1日 09:08:10
  5. 傻傻暴力算
  6. """
  7. def ff1(n):
  8.     #数字转成字符串,然后统计字符串的数量,最后sum相加得到结果
  9.     result=sum([str(r).count("1") for r in range(n+1)])
  10.     print(result)
  11.     return result
  12. ff1(99999999)
  13. #80000000
  14. #[Finished in 56.1s]
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

本帖最后由 codegay 于 2016-4-4 02:52 编辑
  1. #=
  2. julia统计0到n之间1的个数.jl
  3. codegay 2016年4月1日 09:29:23
  4. 写个julia版和python对比下时间
  5. =#
  6. function ff1(n)
  7. result=[length(split(string(r),"1"))-1 for r in 1:n]
  8. result=sum(result)
  9. println(result)
  10. return result
  11. end
  12. ff1(99999999)
  13. #没有找到julia像python count那样直接统计某个字符串数量的方法,吐槽!
  14. #80000000
  15. #[Finished in 24.5s] python版是56s
  16. function ff2(n)
  17. result=[count(x->x==1,digits(r,10)) for r in 1:n]
  18. result=sum(result)
  19. println(result)
  20. return result
  21. end
  22. #ff2(99999999)
  23. #julia0.4.3:
  24. #80000000
  25. #[Finished in 44.7s]
  26. #julia0.4.5
  27. #80000000
  28. #[Finished in 43.2s]
  29. function ff3(n)
  30. result=[count(x->x=='1',string(r)) for r in 1:n]
  31. result=sum(result)
  32. println(result)
  33. return result
  34. end
  35. #ff3(99999999)
  36. #julia0.4.3:
  37. #80000000
  38. #[Finished in 30.3s]
  39. #julia0.4.5:
  40. #80000000
  41. #[Finished in 36.0s]
复制代码
三个计数方法的速度对比.居然是ff1中length(split(string(r),"1"))-1胜出.
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表