方法串链与函数串链
方法串链从左向右读
1
|
f.readline().strip().split('.')
|
函数串链从右向左读
排序有两种方式
原地排序(In-place sorting)是指按照指定的顺序排列数据,然后用排序后的数据替换原来的数据。原来的顺序会丢失。sort()方法提供原地排序。
复制排序(Copied sorting)是指按照指定的顺序排列顺序,然后返回原数据的一个有序副本。原数据的顺序依然保留,只是对一个副本排序。sorted() BIF支持复制排序。
数据清洗
由于输入的数据常常并不是理想的标准格式,因此我们需要对其进行清洗。
例如,教练记录的选手跑步成绩记录成了如下三种形式
2-15, 3:04, 2.44
需要先将这些数据统一为同一种计时方式,再进行后续处理。
创建函数sanitize(),从各个选手的列表接收一个字符串作为输入,然后处理这个字符串,将找到的所有短横线或冒号转换为一个点号,并返回清理过的字符串。
1
2
3
4
5
6
7
8
9
|
def sanitize(time_string):
if '-' in time_string:
splitter = '-'
elif ':' in time_string:
splitter = ':'
else:
return(time_string)
(mins, secs) = time_string.split(splitter)
return(mins + '.' + secs)
|
列表推导
列表推导(list comprehension)是Python提供的工具,用于方便地转换列表,减少代码量。
1
2
3
4
|
clean_mikey = []
for each_t in mikey:
clean_mikey.append(sanitize(each_t))
|
1
|
clean_mikey = [sanitize(each_t) for each_t in mikey]
|
迭代删除重复项
1
2
3
4
5
6
7
|
james = sorted([sanitize(t) for t in james])
unique_james = []
for i in james:
if i not in unique_james:
unique_james.append(i)
print(unique_james[0:3])
|
使用集合删除重复项
工厂函数set() BIF创建集合,其中的数据项是无序的,而且不允许重复。
1
|
print(sorted(set([sanitized(i) for i in james]))[0:3])
|
参考来源
《Head First Python》