python推導資料

麼麼麼meme發表於2017-11-09

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)

相關文章