標籤:python 筆記
第13章 for和while迴圈
1.for比while的執行速度快,python學習手冊的作者一直重啟強調這一點,絕對不嫌囉嗦
2.for的用法特別多
a.for x in list:,跟C#裡的foreach類似,但是對x的修改不能改變原值,除非x是對象的引用(如果要修改原值,只能使用b用法,並且對list[idx]賦值)
b.for idx in range(10):,range可以產生有序整數賦值給idx,可以有三個參數,range(0,10,2),第一個參數為起始值,第二個參數為終止值的下一個值(即不包含此值),第三個參數是步進數(即每次遞增的數,這裡也可以是負值進行反向步進),range可以和len並用:range(len(list))來擷取list元素的索引
c.for item in list[::2]:,這裡list[::2]是分區,item是每次取分區中的元素,第三個參數同樣是步進數(也可以為負)。分區與a有同樣的問題
d.for line in open(‘file.txt‘,‘r‘):,這個用法會逐行取檔案中的內容
e.for (x,y) in zip(list, list2):,zip會將多個序列中相同索引的元素合并成元組,從而產生一個元組列表
f.for key in Dict:,這裡相當於for key in Dict.keys,在新版本中做子簡化(雖然文法上有點怪,但是確實少輸入了5個字元)
g.for (offset,item) in enumerate(list):,offset得到可迭代對象的索引,item得到其元素
h.L = [x+10 for x in list],列表解析 [結果運算式 for x in list if x滿足的條件],居然還可以[x+y for x in ‘abc‘ for y in ‘lmn‘],結果是[‘al‘,‘am‘,‘an‘,‘bl‘,‘bm‘,‘bn‘,‘cl‘,‘cm‘,‘cn‘]
g.for root,dirs,files in os.walk(path):,遍曆檔案夾,root儲存path根目錄路徑,dirs儲存根目錄下的檔案夾名(不帶完整路徑),files儲存檔案名稱(不帶完整路徑)
3.for和while語句比其它語言多一個else塊,只有當迴圈裡沒有執行過break時才會執行else塊裡的代碼(在以往的編程中確實有遇到這樣的需求,可見python滿足了經驗的需求)
4.Dict的初始化可以使用zip來簡化dict(zip(keys, values))
5.zip會以最短長度的序列為準對結果進行截斷
6.map(None, list, list2),map與zip類型,不同的是將以第一個參數填充短序列造成的空缺
7.file = open(‘file.txt‘,‘r‘),file有三種讀取方式
file.read() #讀取整個檔案(費記憶體)
file.read(1) #read by charactor,file=open(‘file.txt‘,‘rb‘)後跟file.read(1)表示讀取位元組塊
file.readline() #read line by line
file.readlines() #read whole file to list include lines
file.xreadlines() #按需求載入文字列
8.迭代器:
file.readline()相當於執行了迭代器file.next(),不同的時當執行file.next()到達檔案末尾會拋出StopException異常(其它類型迭代器需要iter(list)轉換一下)
sorted(list) #使用迭代將list重新排序
sum(list) #使用迭代將list元素內容相加
any(list) #使用迭代將所有元素or求結果
all(list) #使用迭代將所有元素and求結果
‘&&‘.join(strlist) #使用迭代在所有字串元素中間插入&&得到一個字串
list(listable) #使用迭代建立可迭代對象的list對象
tuple(listable) #使用迭代建立可迭代對象的元組新對象
9.pass是空語句
10.賦值語句不能出現在應該是運算式出現的場合(這個很贊!)例如C語言中的if (x=next())就不能在python中使用
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
python學習筆記二