Skip to Main Content
高效能PYTHON程式設計
book

高效能PYTHON程式設計

by Micha Gorelick, Ian Ozsvald
August 2015
Intermediate to advanced content levelIntermediate to advanced
384 pages
7h 42m
Chinese
GoTop Information, Inc.
Content preview from 高效能PYTHON程式設計
96
|
第五章
計算給過份拖累。最後,
fibonacci_transform
比較可泛化(generalizable),這個函式能夠
被重新命名為
num_odd_under_5000
,並且透過引數接受生成器,因而作用在任何數列上。
fibonacci_transform
的最後一個好處是,它支援在計算裡存在兩個階段的想法:產生資
料以及轉換資料。這個函式非常清楚地對資料做轉換,而
fibonacci
函式生成資料。這
個清楚的劃分增加了額外的清晰度及額外的功能性︰我們能夠讓轉換函式改為作用在一
組新資料上,或者對既有的資料進行多個轉換。在建立複雜的程式時,這種模式一直是
很重要的;生成器負責建立資料,一般函式負責對生成的資料做進一步的處理。
生成器延遲評算
如先前所述,生成器能夠節省記憶體的原因是它只處理感興趣的當前值。在使用生成器
的計算過程中,於任何時間點,我們只擁有當前值,而且不能夠參照序列的任何其他項
目(這種演算法一般被稱作
single pass
online
)。這有時候會讓生成器較難使用,
但有很多模組與函式能夠幫上忙。
主要的程式庫是標準程式庫裡的
itertools
,它為Python 內建函式
mapreduce
filter
、與
zip
提供生成器版本(稱作
imapireduceifilter
izip
),還有許多其他
有用的函式,需要特別指出的是︰
islice
允許切割出可能無限的生成器
chain
鏈接多個生成器
takewhile
增加將結束生成器的條件
cycle
透過不斷重複,讓有限的生成器變無限 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

流畅的Python

流畅的Python

Luciano Ramalho
手把手教会你linux

手把手教会你linux

桑德.范.乌格特

Publisher Resources

ISBN: 9789863477105