python推导数据

来源:互联网 发布:java表达式 编辑:程序博客网 时间:2024/06/05 09:14

james.txt:2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22
julie.txt:2.59,2.11,2:11,2:23,3-10,2-23,3:10,3.21,3-21
mikey.txt:2:22,3.01,3:01,3.02,3:02,3.02,3:22,2.49,2:38
sarah.txt:2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55
处理4个选手的数据,输出每个选手跑的最快的3个时间。
1、排序的2中方式
①原地排序sort()
原地排序是指按照指定的顺序排列数据,然后用排序后的数据替换原来的数据。原来的顺序会丢失。
这里写图片描述
②复制排序sorted()
复制排序是指按照指定的顺序排列数据,然后返回原数据的一个有序副本。原数据的顺序依然保留,只是对一个副本排序。
这里写图片描述

向sort()或sorted()传入reverse=True可以按降序排列数据
2、推导列表
格式:
clean_mikey=[]
for each_t in mikey:
clean_mikey.append(sanitize(each_t))
等价于:
clean_mikey=[sanitize(each_t) for each_t in mikey]
3、用集合删除重复项
distances=set(james)
4、要访问列表中的多个数据项可以用分片:
james[0:3]从索引位置0直到(不包括)位置3

def open_file(file_name):    try:            with open(file_name) as data:                    time_items= data.readline().strip().split(',')                    return time_items    except IOError as err:        print('File error:'+str(err))def time_format(time_item):        if '-' in time_item:            splits='-'        elif ':' in time_item:            splits=':'        else:            return time_item        (mins,secs)=time_item.split(splits)        return(mins+'.'+secs)time_itmes=open_file(r'C:\Users\Administrator\Desktop\HeadFirstPython\chapter5\hfpy_ch5_data\james.txt')james=[time_format(time_item) for time_item in time_itmes]james=sorted(set(james))[0:3]print(james)
原创粉丝点击