標籤:set 列表 print yield 空間 dict 大量 font 迴圈
切片:用於取一個list或tuple的部分元素;L = [‘Michael‘,‘Sarah‘,‘Tracy‘,‘Bob‘,‘Jack‘]L[0:3] //表示從索引0開始取,直到索引3為止,但不包括索引3,即索引0,1,2;正好是三個元素;L[:3] //如果第一個索引是0,還可以省略;L[1:3] //從索引1開始,到3-1結束;L[-2:] //從倒數第二個元素開始取,取完元素;L[-2:-1] //從倒數第二個元素開始取,取到倒數第一個元素;好,現在我們再加強一下這個處理方式,我們還想要更多的功能,例如,每兩個取一個;L = list(range(100))L[:10:2] //從索引0開始取,(從這裡也可以看出,range(100)是指從0到100-1),取到10-1,然後每兩個取1個,也就是0,2,4,6,8而字串也可以呀看成是一種list,每個元素就是一個字元。也可以用切片操作,‘ABCDEFG‘[0,3] //‘ABC‘‘ABCDEFG‘[::2] //‘ACEG‘迭代:字典也可以用迭代的方式來實現,不過,dict迭代的是key,如果要迭代value,可以用for value in d.values();如果要同時迭代key和value,用for k,v in d.items();迭代字典的value:for n in d.values(): print(n)迭代字典的key和value:for k,v in d.items(): print(k,v) 在for迴圈中,同時引用兩個變數是很正常的:for x,y in [(1.1),(2,4),(3,6)]: print(x,y)在輸出的時候,直接用print(x,y)就可以了~~列表產生式:寫列表產生式時,把要產生的元素x*x放到前面, 後面跟for迴圈,就可以把list建立出來;[x * x for x in range(100)] //把range(100)裡面的元素放到x之後,根據x*x產生列表;[m + n for m in ‘ABC‘ for n in ‘XYZ‘] //使用兩層迴圈,產生全排列;產生器:建立一個列表,受到記憶體限制,列表容量有限。我們希望在迴圈的過程中不斷推算出後續的元素,這樣就不必建立完整的list,從而節省大量的空間,一邊迴圈一邊計算,稱為產生器:generator;第一種方法,把一個列表產生式的[]改成();就建立了一個generator;L = [x * x for x in range(100)]g = (x * x for x in range(100))print(next(g)) // 0print(next(g)) //1我們已經知道,可以直接作用於for迴圈的資料類型有以下幾種:一類是集合資料類型,如list,tuple,dict,set,str等;一類是generator,包括產生器和帶yield的generator function;可以直接作用於for迴圈的對象統稱為可迭代對象:iterable;而可以被next()函數調用並不斷返回下一個值的對象稱為迭代器:iterator;使用isinstance()判斷一個對象是否是iterator對象;產生器都是iterator對象,但是list,dict,str雖然是iterable卻不是iterator;把list,dict,str等iterable變成iterator可以用iter()函數;註:凡是可作用於for迴圈的對象都是iterable類型;凡是可作用於next()函數的對象都是iteratorlexington,表示一個惰性計算的序列;
python進階特性