Python学习笔记:数据的处理

上次的学习中有个split函数,照着head first Python上敲一遍代码:

1 >>> with open('james.txt') as jaf:
2     data=jaf.readline()
3     james=data.strip().split(',')

先看一下james.txt里面数据的格式

第三行代码的意思就应该是先去除掉字符串中的空白符,再按照','进行分割,学习到这里感觉Python的语法是很灵活的....

1 >>> print(james)
2 ['2-34', '3:21', '2.34', '2.45', '3.01', '2:01', '2:01', '3:10', '2-22']

数据的排序:

在Python中对数据排序有两种方式:第一种,In-place sorting,原地排序,会更改原来数据的排序;第二种,Copied sorting,复制排序,新建一个副本,对副本排序,即不会更改原来数据的排序

实战一下吧:

1 >>> a=[1,4,6,3,5]
2 >>> a1=sorted(a) # 复制排序
3 >>> a1
4 [1, 3, 4, 5, 6]
1 >>> a.sort() # 原地排序

创建一个函数统一时间格式:

1 >>> def sanitize(time_string):
2     if '-' in time_string:
3         splitter='-'
4     elif ':' in time_string:
5         splitter=':'
6     else:
7         return(time_string)
8     (mins,secs)=time_string.split(splitter)
9     return(mins + '.' + secs)

看看处理后的数据:

1 >>> cl_james=[]
2 >>> for each_t in james:
3         cl_james.append(sanitize(each_t))

再排序输出:

1 >>> print(sorted(cl_james))
2 ['2.01', '2.01', '2.22', '2.34', '2.34', '2.45', '3.01', '3.10', '3.21']

推导列表:一行代码就能完成空列表的创建,迭代,每次迭代的操作,迭代后的赋值给新建的列表...这样的语法可能有点不容易理解吧

1 >>> cl_j=[sanitize(each_t) for each_t in james]
2 >>> cl_j
3 ['2.34', '3.21', '2.34', '2.45', '3.01', '2.01', '2.01', '3.10', '2.22']

感觉有点像R语言中的apply函数

Python的’集合’数据结构

1 >>> distances=set() # 生成空集合并赋给一个变量
1 >>> distances={10.6,10.6,8}
2 >>> distances
3 {8, 10.6}

用大括号进行赋值,Python中的集合是无序切不重复的数据集,若输入了重复的数据,Python会忽略。输出一下

1 >>> print(sorted(set(scl_j))[0:3])
2 ['2.01', '2.22', '2.34']

 

posted @ 2017-04-13 17:41  hahaxzy  阅读(242)  评论(0编辑  收藏  举报