笨办法学 Python · 续 练习 11:`uniq`

练习 11:uniq

原文:Exercise 11: uniq

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

在最后两个练习的开始,没有什么可说的了。你应该知道如何思考你的工作环境,你如何开始,你如何坐下来,影响你开始的任何事情。你也应该使用这些小小的 45 分钟的项目,突破了起始状态。如果你还没有弄清楚,设置一个 45 分钟的计时器,并大喊“来干个痛快!” ,这是使自己开始的核心技巧。完成出色的工作的目标还没有完成,但是你已经起步了

你还应该有一个不错的实验笔记本,上面有运行图来描绘出你的改进效果如何。你的图表并不是非常科学,但是他们应该帮助你了解什么有用,什么没用。当你使用运行图时,你只需要在任一方向查找峰值,然后尝试为峰值找到“合理的原因”。如果峰值是有利的,那么试着找出原因并复现它。如果峰值是有害的,那么试着找出原因并防范于未然。

当我说“峰值”时,我的意思是重大变化。运行图应该是波动的。事实上,如果对于 45 分钟的 Hack,它保持不变,那也是坏的,你应该找出原因。正常流程在平均值周围波动和反弹,你应该只尝试找到任何一个方向的较大峰值的原因。如果你在以前的练习中进行了“深入学习”,则可以使用2 * std.dev(两倍标准差)作为平均值上方和下方的线(俗称布林线),来发现问题。

运行图的更多演示请见此练习的视频(见原文)。它们在视频中更容易在视觉上解释。

挑战练习

uniq命令仅仅接受sort产生的,排序后的行,并移除重复。当你想要获得列表的非重复行时,这非常方便。如果你已经实现了这些命令,那么你应该可以这样做:

history | sed -e "s/^[ 0-9]*//g" | cut -d ' ' -f 1 | sort | uniq

history命令打印出你运行过的每个命令的列表。你的sed命令需要正则表达式,这将去掉history命令的头部。接下来我用cut来抓取第一个单词作为命令名称。之后,我通过uniq排序并执行它,并且你需要拥有所有你执行的命令。

实现uniq的足够功能,和任何其他必要的命令,使前面的命令工作。如果你的sed无法处理表达式,你可以更改格式,但在完成此练习后,你应该可以得到一个命令列表。

研究性学习

  • 你现在有一个的命令列表,你可以开始执行它,如果你想深入学习的话。
  • 这是第一个多项目练习,其中你将之前步骤中的练习组合成一个练习。你有没有找到关于你的流程的新东西?
  • 你的运行图怎么样?他们有帮助吗?

深入学习

研究 Python 的图表库,看看你是否可以用 Python 生成这些运行图。你还应该开始跟踪你需要花费多长时间来开始,看看运行图是否可以帮助你缩短所需时间。

posted @ 2017-08-04 18:36  绝不原创的飞龙  阅读(11)  评论(0编辑  收藏  举报  来源