幾年前,函數語言程式設計的復興正值巔峰,一篇介紹 Scala 中 10 個單行函式式程式碼的博文在網上走紅。很快地,一系列使用其他語言實現這些單行程式碼的文章也隨之出現,比如 Haskell, Ruby, Groovy, Clojure, Python, C#, F#, CoffeeScript。
每篇文章都令人印象深刻的揭示了這些語言中一些出色優秀的程式設計特徵。程式設計高手們利用這些技巧提高程式設計速度、改進軟體質量,程式設計初學者能從這些簡潔的預防中學到各種程式語言的真諦。本《震驚小夥伴的單行程式碼系列》將逐一介紹這些各種程式語言單行程式碼文章,供大家學習參考。
1、讓列表中的每個元素都乘以2
1 |
print map(lambda x: x * 2, range(1,11)) |
2、求列表中的所有元素之和
1 |
print sum(range(1,1001)) |
3、判斷一個字串中是否存在某些詞
1 2 3 4 |
wordlist = ["scala", "akka", "play framework", "sbt", "typesafe"] tweet = "This is an example tweet talking about scala and sbt." print map(lambda x: x in tweet.split(),wordlist) |
4、讀取檔案
1 |
print open("ten_one_liners.py").readlines() |
5、祝你生日快樂!
1 |
print map(lambda x: "Happy Birthday to " + ("you" if x != 2 else "dear Name"),range(4)) |
6. 過濾列表中的數值
1 |
print reduce(lambda(a,b),c: (a+[c],b) if c > 60 else (a,b + [c]), [49, 58, 76, 82, 88, 90],([],[])) |
7. 獲取XML web service資料並分析
1 2 3 4 |
from xml.dom.minidom import parse, parseString import urllib2 # 注意,我將它轉換成XML格式化並列印出來 print parse(urllib2.urlopen("http://search.twitter.com/search.atom?&q=python")).toprettyxml(encoding="utf-8") |
8. 找到列表中最小或最大的一個數字
1 2 |
print min([14, 35, -7, 46, 98]) print max([14, 35, -7, 46, 98]) |
9. 並行處理
1 2 3 4 |
import multiprocessing import math print list(multiprocessing.Pool(processes=4).map(math.exp,range(1,11))) |
10. “Sieve of Eratosthenes”演算法
Python裡沒有Sieve of Eratosthenes操作符,但這對於Python來說並不是難事。
1 2 3 |
n = 50 # We want to find prime numbers between 2 and 50 print sorted(set(range(2,n+1)).difference(set((p * f) for p in range(2,int(n**0.5) + 2) for f in range(2,(n/p)+1)))) |