【Python】[06]推导数据
本章主要展示用python如何处理目标数据,包括统一数据格式、去除重复数据、数据排序
在处理数据的过程中,用到了列表推导,列表分片和创建集合。
统一数据格式:
处理统一数据的过程中,需要创建一个函数,使用前面章节中学到的for循环遍历每个列表中的数据,然后用if...else语句,将中间不符合统一规范的字符替换成统一字符即可,代码如下:
def sanitize(time_string):
if "-"in time_string:
splitter="-"
elif ":"in time_string:
splitter=":"
else:
print time_string
(mins,secs)=time_string.split(splitter)
return (mins+"."+secs)
同意数据格式后,可对已知数据进行排序,排序会用到两个方法,sort()和sorted(),这两个BIF都时默认按照升序对数据进行排列,要以降序排列数据,需要向sort()或sorted()传入参数reverse=True
推导数据:
将一个列表转换为另一个列表,需要做一下四件事:
1、创建一个新列表来存放转换后的数据
2、迭代处理原列表中的各个数据项
3、每次迭代时完成转换
4、将转换后的数据追加到新的列表
推导列表的好处是避免重复的去创建列表
比如,我要使用上面统一数据的函数,将已有列表中的数据进行统一数据格式,用推导数据的方式,就不必先创建一个空列表,再来处理数据,一行代码就可以搞定:
new_link=[sanitize(each_item) for each_item in old_link]
new_link就是创建的新列表,sanitize()是一种转换,each_item就是目标标识符,old_link指现有列表。
去除重复数据:
正常的去除列表重复数据的逻辑是:迭代处理原列表中的各数据,从第一个数据开始,向另一个列表中追加,如果另一个列表中已有,则不再追加进去。这样的话需要一个小的迭代循环实现。
不过python有一个“工厂”函数set()可以直接实现数据的去重。
工厂函数:用于创建某种类型的新的数据项,估计是创建者觉得他的作用和工厂差不多,因此给他取名工厂函数吧。
set()的作用是创建一个新的集合,而集合的定义,刚好不允许有重复项,当出现重复项的时候,会把重复项过滤掉。(高中数学已经记不得了,百度了下集合的含义,有一个特性是互异性,这里指的就是没有重复项)
列表分片:
在菜鸟教程中,列表的分片已经讲的很详细了,就是指,输出列表中,从起始位置开始,到结束位置的列表数据。
嗯,这一节还是收获颇多的,虽然距离上一节跨度蛮大,后面要追上来继续学习了。
晚安~~