今天讀完了《python標準庫》的第三章,前面兩章(字符,容器)日后再補,今天先總結第三章:算法部分(總覺得這個算法翻譯錯了……)記得很有意思的是itertools.先總結一下吧。書上所列舉的分解和合并迭代器有
chainizipimap islice說下自己的想法,chain顧名思義,鏈子,可以將多個列表聯合起來。書上所列舉的代碼
from itertools import * for i in chain([1,2,3],['a','b','c']): PRint i,應該還是相當明顯的。
下面說下 izip 這個很好玩
from itertools import * for i in izip([1,2,3],['a','b','c'],[1,4,5,4]): print i代碼如上,輸出為 (1, 'a', 1) (2, 'b', 4) (3, 'c', 5)
就想壓縮包一樣,把三個都壓縮在一起,生動形象。
下面是是imap,書上的解釋我的理解為,每迭代一次,提取數,放入函數,然后返回值。 書上代碼為:
from itertools import * for i in imap(lambda x:2*x,xrange(5)): print i就比如從0到4調用 然后放入2*x這個函數。
islice就是個切片,不詳細說了。
然后所看的內容是過濾,書上所介紹的內容有下面幾個
dropwhiletakewhileifilterifilterfalse看名字的話是drop while(什么什么)的。
from itertools import * for i in dropwhile(lambda x:x>0,(1,5,-1,5,8)): print i輸出是 -1 5 8
那么就是while(什么什么) drop 知道第一次判斷出現false之后 不扔
和上面正好相反,while(什么什么) take 知道一次出現false之后不take
過濾器,只留下表示為True的
from itertools import * for i in ifilter(lambda x:x>0,(1,5,-1,5,8)): print i,輸出結果為1 5 5 8
false過濾器,可以想象,就不說了
今天就先寫這么多吧,感覺寫寫蠻有意思的哈哈.
新聞熱點
疑難解答