村上春樹 於耶路撒冷文學獎的演講,值得一讀,本文來自 朱學恆的阿宅萬事通事務所。
26 February, 2009
17 December, 2008
Python Idiom: sort
data = [2, 3, 4, 5, 1] data.sort()上述程式碼會將 data 的元素由小到大排序, 因為 sort() 是直接排序 data 的元素,而不是排序複製 data 的元素, 所以傳回值是 None 以避免困擾,如果要將排序過的資料傳給另一個序列要使用 sorted(),如
sorted_data = sorted(data)假設現在 data 改成如下
data = [(11, 5, 1000), (13, 4, 10), (17, 6, 100), (19, 5, 1) ]想要以 tuple 的第二、三、一個元素的大小做排序,該怎麼做?
10 December, 2008
04 December, 2008
妳的彩虹是什麼顏色?
在 jserv 的部落格看見一個好玩的測驗 What color is your rainbow?。 彩虹的顏色是紅橙黃綠藍靛紫,
但是每個人看事情的角度不同, 這個測驗會依據你的人格特質做出一個獨特的彩虹。 測驗的題目都是二選一,挑出使你快樂或者愉快的答案, 如果不確定要選那一個,可以跳過, 題目不多,很快就可以做完了,有興趣的人可以試試看 :P
28 November, 2008
Python Idiom: dictionary
d = dict(a=1, b=2, c=3) d = {'a': 1, 'b': 2, 'c': 3}第一種做法不用打括號,打字會稍微快一點, 如果要用兩個 list 分別當作 dictionary 的 keys 跟 values, 可以利用 zip() 這個函式,例如
names = ['a', 'b', 'c'] counts = [1, 2, 3] d = dict(zip(names, counts))
19 November, 2008
Python Idiom: map, filter
items = [1,2,3,4,5] result = [] for i in items: result.append(i*i)map 提供了另一種方法
def square(x): return x*x result = map(square, items)map 的第一個參數是函式,第二個參數是序列, 而傳回值則是將輸入的函式套用到輸入序列的每一項元素所形成的新序列。 其實還可以寫得更短
result = map(lambda x: x*x, items)上面例子中的 lambda x: x*x 定義了一個無名函式,效果就如同前面定義的 square()。
06 November, 2008
推薦網站:The Big Picture
The Big Picture 是 boston.com 下的一個 photo blog,意在提供高品質令人驚豔的影像包含了當前的事件, 少為人知的故事,還有任何有趣的事情。 底下列出讓我印象深刻的系列:
- Obama
- Earth From Above (一定要看,實在太美了)
- 2008 澳洲 MotorGP
- 秋天
- 世界動物日
- 颶風 Ike
- 回教齋月
- 從地球外所看到的颱風
- 美國選舉
- 2008 北京奧運
- 環法賽
05 November, 2008
Python Idiom: in
for key in d: print key其中 d 的型態可以是 list, tuple, set, string, dictionary 等。 要檢查一個字串是否含有某子字串,通常會想到下面的做法
sentence = "fly me to the moon" if sentence.find("fly") != -1: print "successful"其實更好的方法是用 in
if "fly" in sentence: print "successful"是不是更好閱讀,打字也更快呢?
04 November, 2008
Python Idiom: join
items = ['red', 'blue', 'green', 'yellow'] result = '' for s in items: result += sPython 提供了一個更有效率的解法
result = ''.join(items)如果字串中間要用逗號跟空白做分隔時,只要改成
result = ', '.join(items)單括號內的字串就是隔開 items 元素的分隔物, 所以如果單括號內是空的,就表示沒有分隔物。 底下介紹上述技巧的應用
03 November, 2008
Python Idiom: list comprehensions
numbers = [1,2,3,4,5,6] squares = [] for n in numbers: if n % 2 == 0: squares.append(n*n)上述程式碼將 numbers 中是偶數的元素平方之後加到 squares。利用 list comprehensions 只要一行程式碼就可以完成目的。
squares = [n*n for n in numbers if n % 2 == 0]請注意程式的可讀性是不是並沒有因為程式碼的縮短而減少呢? 其實 list comprehensions 中可以有很多個 for 跟 很多個 if, 不過使用時要斟酌一下,如果真的有很多個 for 跟 if, 最好考慮使用一般的寫法,不然程式就會變得不易閱讀。
02 November, 2008
Python Idiom: enumerate
for item in items: print item但如果要同時把 item 的 index 也印出來,該怎麼做?
31 October, 2008
給年輕數學家的建議 - Alain Connes
30 October, 2008
Python Idiom: tuple
tmp = a; a = b; b = tmp;而在 Python 中只要一行就可以解決了
a, b = b, a
22 October, 2008
使用命令列上傳 google 文件
相信很多人都會使用 Google Docs 來撰寫文件吧, 我則是拿它當作文件備份的工具,平常我會將一些想要記錄的事寫成純文字檔, 比如記錄機車加油的里程數,英文單字,還有買了那些東西,假設這三個檔案分別叫做 bike.txt, vocabulary.txt, buy.txt, 因為懶得登入找到文件再找到上傳的按鈕,我想要使用下面的命令列就好了:
google_docs bike.txt vocabulary.txt buy.txt
21 October, 2008
generating all vertices of a box
續之前產生 排列組合 的問題,無意間又發現了一個新的解法,先回顧問題一下, 如何產生下面的序列?
0000 1000 0100 1100 0010 1010 0110 1110 0001 1001 0101 1101 0011 1011 0111 1111
20 October, 2008
給年輕數學家的建議 - Michael Atiyah
Terence Tao 跟 Peter Woit 不約而同地介紹了 The Princeton Companion to Mathematics, 這本書是一本數學參考書,主要是寫給對數學有興趣的人, 包含了兩百多個項目,分別由世界上項尖的數學家所撰寫, 介紹了基本的數學工具及字彙;追溯當代數學的發展; 解釋基本名詞及概念;檢視數學主要分支的核心概念; 描述有名數學家的成就;檢視數學對其它領域的影響如生物、經濟、音樂等。
令人高興的是 書中的某些文章 可直接下載觀看, 最令我感興趣的是 Advice to a Young Mathematican 這一段,當中5位數學家描述了他們做研究的方式,其中的心路歷程, 還有從幫助學生變成研究者所得到的心得。 第一位英國數學家 Michael Atiyah,他拿過 1966 年的 Fields Medal, 還有 2004 年的 Abel Prize。 底下摘錄幾句讓我引起共鳴的話,並附上翻釋, 有錯請不吝指正。
07 September, 2008
28 March, 2008
George Dantzig
在 Terence Tao 的部落格看到 這篇, 就有了介紹 George Dantzig 這位美國數學家的念頭。 學過 linear programming 大概都知道 George Dantzig 吧,他最為人所知的貢獻就是發展 simplex method 來解 linear programming 的問題。 (linear programming 中文是線性規劃,簡寫是LP,陳唐山還是外交部長的時候, 這兩個字母上過新聞 XD) 題外話,目前解線性規劃最有效率的方法已經不是 simplex method 而是 inter point method。
27 March, 2008
關於本站
我是從 2005 開始寫部落格,第一個部落格落腳在 Blogger, 那時候 Blogger 對中文的支援還很差, 後來就轉到 養樂多 (Yam-Roodo), 蕃薯藤 (Yam) 被 web-tv 買下之後就與樂多 (Roodo) 分家了, 而我選擇留在 樂多,為了以防萬一, 我在 Blogger 又建立了一個部落格,兩個部落格會同時更新。
開始寫部格落之後,學到很多東西。 為了做網頁我重新開始學 XHTML、CSS, 甚至還學了一點 JavaScript, 這個部落格的樣式就是我學習的成果。 因為所見即所得 (WYSIWYG) 軟體寫出來的網頁達不到我的要求, 所以我是用寫原始碼的方式在寫網頁。 我認為有心做出好網頁的人一定要學習基本 XHTML 與 CSS 的語法,才是正道。 在學做網頁之前建議先了解什麼是 Web Standards ,有個概念即可,不用強求每一項都了解。
為了放圖片,所以開始使用 flickr, 為了有效地瀏覽其他人的部落格,所以開始使用 Google Reader, 為了整理每天所看到的一堆書籤,所以開始使用 美味書籤。 之前不想使用這些服務的藉口是懶,懶得去學新的東西, 可是當我開始使用這些服務之後, 卻後悔沒有早一點接觸這些技術, 這些技術讓我可以有系統地瀏覽、整理多到爆炸的資訊。 總之這一切都是從寫部格格開始的。 (目前在使用的服務還有 Gmail 及 Box.net。 ) 底下介紹將來我想寫的東西。