1
0
mirror of https://github.com/apachecn/lmpythw-zh.git synced 2025-05-28 12:02:19 +00:00
lmpythw-zh/ex11.md
wizardforcel 1b1770a200 ex11
2017-08-04 18:39:51 +08:00

42 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 练习 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 生成这些运行图。你还应该开始跟踪你需要花费多长时间来开始,看看运行图是否可以帮助你缩短所需时间。