多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 练习 11:`uniq` > 原文:[Exercise 11: uniq](https://learncodethehardway.org/more-python-book/ex11.html) > 译者:[飞龙](https://github.com/wizardforcel) > 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) > 自豪地采用[谷歌翻译](https://translate.google.cn/) 在最后两个练习的开始,没有什么可说的了。你应该知道如何思考你的工作环境,你如何开始,你如何坐下来,影响你开始的任何事情。你也应该使用这些小小的 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 生成这些运行图。你还应该开始跟踪你需要花费多长时间来开始,看看运行图是否可以帮助你缩短所需时间。