数据处理
掌握了前面4章,这就是比较简单的一章。
先看一个需求:
有一个跑步教练kelly,他最好的选手一直在刻苦训练,每次跑步成绩,kelly都会及时的把事件记录在计算机的一个文本文件中。总共有四个文件,分别记录james,sarah,julie和mikey的时间数据。
james:2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22
julie:2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21
sarah:2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55
mikey:2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38
首先,这个教练需要一种快捷的方法能够很快了解每个选手跑得最快的3个时间
分析数据,有的是以 连接,有些以 连接,还有的是 。需作分类讨论转化为小数。
排序
接下来介绍列表排序方法。
sort:用法如arr.sort(),不会返回新的列表,且修改原有列表
sorted:用法如sorted(arr);返回一个新数组,不修改旧列表
都是升序排列。如需要降序,需要加入参数
显然是后者最优。
列表迭代
列表推导
这里使用原来所学得到的方案。在getFast中,会然后追加一个新的列表。这种语法比较low。
是谓之一行搞定,得之简洁,失之灵活
回到需求:列表去重和截取
需求是:获取每个选手的快的数据
首先要明确去重的判断是
其次,列表截取前三个的方法是
计划通。
改进:集合(set)
列表去重的问题引发另一个思考:有没有另外一个BIF方法去重呢?
是时候介绍另外一个数据结构了——集合。
集合与数学上的集合差不多,啥数据都能放,除了重复。
如:
最后再优化下代码:
搞定。
领取专属 10元无门槛券
私享最新 技术干货