Tuesday, October 27, 2009

A tutorial tricks

突然想到可以show一下python的map和reduce。
估計第一次見到的學生會驚訝吧。不過這也好,就當開拓一下視野吧。
不過可能會涉及到lambda 算子,有點難解釋啊……

map的例子,比如生成一個等比數列的前k項,其中 an=a*q^(n-1)
取k=10, a=1, q=2,則得到前10個2的倍數:
a,q,k=1,2,10
an=lambda a,q,k: a * q**k
map(an, k*[a],k*[q],xrange(0,k))
應該有更簡單的寫法,不過這樣做比較直觀。

reduce的例子,比如要計算n!
mul=lambda x,y: x*y
reduce(mul, xrange(1,n+1))

適用範圍:
講述first order function, functional programming
甚至是掩飾geometric series 以及 factorial即可。
特別是掩飾factorial,可以很好地結合reduce原理, 展示出什麽是遞歸,遞歸樹,以及尾遞歸。
同時也可以展示binay tree的遞歸表示:list,許多基本數據結構都可以表示為list。

No comments: