炫技:一行代碼解決一道題(用來娛樂的)
文章分類:唐朝
假如我們現在有這樣一道題:
我們要輸出,1到100以內所有數字的平方中的偶數,這個題應該如何去求解呢?
是用循環,判斷吧!其實,這個題,可以用以下這行代碼,一行代碼搞定:
print filter(lambda x:True if x%2==0 else False,list(map(lambda x:x*x,[i for i in range(1,101)]))))
註意:盡量不要養成這樣的代碼習慣!這個隻是用來玩的!否則您的同事,同學或者老板就要抓狂瞭。
寫這個例子就是展示什麼叫做,functional programming的一行頂10行。實際上在我第一個代碼裡,我寫瞭20多行。但實際上,用一行FP就全部搞定瞭。
這個是不是特別誇張?其實我們並不用在很多時候寫如此誇張的代碼。代碼,本身是寫給人看的。這種炫技型的代碼並不是非常容易讀懂。這也違背瞭FP的本意。我在下面的代碼裡附上瞭三種版本,可以供您參考和學習。其中方法二包含瞭如何用FP增強代碼的可讀性的部分。
在這裡,我們所用的就是非常著名的函數式編程:Functional programming。