摘要:原來的順序會丟失。原數據的順序依然保留。方法串聯第一個方法應用到數據中,然后再將處理好的數據應用到第二個方法中。例子函數串聯每個函數會取得數據,對他完成某個操作,然后把轉換后的數據繼續向下傳遞到下一個函數。
1.排序有兩種方式
原地排序(in-place sorting),按指定的順序排列數據,然后用排序后的數據替換原來的數據。原來的順序會丟失。
sort()
復制排序(copied sorting),按你指定的順序排序,然后返回原數據的一個有序副本。原數據的順序依然保留。
sorted()
方法串聯(method chaining)2.數據不一致導致排序中出現問題,需要整理數據第一個方法應用到數據中,然后再將處理好的數據應用到第二個方法中。從左向右讀。
例子:
data.strip().split(",")
函數串聯(function chaining)每個函數會取得數據,對他完成某個操作,然后把轉換后的數據繼續向下傳遞到下一個函數。 從右向左讀。
例子:
print(sorted(james))
創建一個函數,傳入時間參數,然后將不一致的(-,:)數據清除掉,然后將其分割為分和秒,然后整合在一起,形成統一時間格式 MM:SS 。
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)
然后修改代碼
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) with open("james.txt") as jaf: data = jaf.readline() james = data.strip().split(",") with open("julie.txt") as juf: data = juf.readline() julie = data.strip().split(",") with open("mikey.txt") as mif: data = mif.readline() mikey = data.strip().split(",") with open("sarah.txt") as saf: data = saf.readline() sarah = data.strip().split(",") clean_james = [] clean_julie = [] clean_mikey = [] clean_sarah = [] ---------臃腫的部分------------ for each_t in james: clean_james.append(sanitize(each_t)) for each_t in julie: clean_julie.append(sanitize(each_t)) for each_t in mikey: clean_mikey.append(sanitize(each_t)) for each_t in sarah: clean_sarah.append(sanitize(each_t)) print(sorted(clean_james)) print(sorted(clean_julie)) print(sorted(clean_mikey)) print(sorted(clean_sarah)) ---------臃腫的部分------------3.不過代碼看來十分臃腫,學會使用推導列表
clean_mikey = [] for each_t in mikey: clean_mikey.append(sanitize(each_t))
變成
clean_mikey = [sanitize(each_t) for each_t in mikey] 新列表 轉換方法 for循環 列表
append動作隱含在里面了。
推導列表有點奇怪,不過寫多幾次就熟悉了。
[m * 60 for m in mins] [s.upper() for s in lower] [float(s) for s in clean]
使用推導列表后,程序簡化了
print(sorted([sanitize(t) for t in james])) print(sorted([sanitize(t) for t in julie])) print(sorted([sanitize(t) for t in mikey])) print(sorted([sanitize(t) for t in sarah]))4.只需要前三項數據
可以使用列表分片
如:
james[0:3]5.刪除重復項
有2種方法:
1.用集合的方法,集合的特性是數據是無序的,而且不允許重復。
james = {10.6,11,10.6} distances = set(james) #set()就是集合的方法
這樣distances出來的數據就是無序且不重復的。
2.用遍歷的方法
unique_james = [] for each_t in james: if each_t not in unique_james: #判斷是否在數組中,不在就放進新的數組 unique_james.append(each_t)
BTW:
python中有兩種類型的列表,一種是可以改變的列表(用中括號包圍),一種是不可改變的列表(用小括號包圍)-叫元組tuple,還有一種不是列表,是集合,用大括號包圍。
原文引用:http://www.godblessyuan.com/2015/04/27/head_first_python_chapter_5_lea...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37546.html
摘要:在指定位置刪除并返回這個數據項,注意這里是有返回項的。移除某一個特定數據項。第二章發布并上傳代碼到在查閱大量資料發布和上傳還有很多附屬文件需要編寫和上傳以確保模塊能夠正常發布和更新。包含函數串鏈,特點是中包含函數。 寫在前面:吾嘗終日而思矣,不如須臾之所學也;吾嘗跂而望矣,不如登高之博見也。登高而招,臂非加長也,而見者遠;順風而呼,聲非加疾也,而聞者彰。假輿馬者,非利足也,而致千里;假...
摘要:可以通過定位參數和關鍵字參數傳入的形參多數函數的參數屬于此類。就像數據格式化一樣數據帶上標簽自行創建函數它會自行創建函數。創建的函數會在對象上調用參數指定的方法自己創建函數凍結參數這個高階函數用于部分應用一個函數。 高階函數 接受函數為參數,或者把函數作為結果返回的函數是高階函數 def reverse(word): return word[::-1] ...
摘要:消息向迭代器獲取所表示的底層序列的下一個元素。為了對方法調用做出回應,迭代器可以執行任何計算來獲取或計算底層數據序列的下一個元素。這個迭代器應擁有方法,依次返回序列中的每個元素,最后到達序列末尾時產生異常。 第五章 序列和協程 來源:Chapter 5: Sequences and Coroutines 譯者:飛龍 協議:CC BY-NC-SA 4.0 5.1 引言 在這一章中,我...
showImg(http://source1.godblessyuan.com/blog_head_first_python_chapter_4_20150426.jpg); 其實持久存儲不僅僅包含文件,還包括數據庫等,本章先介紹一部分,先熟悉一下。 熟悉python數據 #!/usr/bin/python # -*- coding: utf-8 -*- man = [] other =...
閱讀 2097·2023-04-26 00:09
閱讀 3115·2021-09-26 10:12
閱讀 3481·2019-08-30 15:44
閱讀 2863·2019-08-30 13:47
閱讀 922·2019-08-23 17:56
閱讀 3226·2019-08-23 15:31
閱讀 475·2019-08-23 13:47
閱讀 2508·2019-08-23 11:56