上次的学习中有个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']