python小技巧

1. 字符串拼接(join的對象是列表):使用’’.join進行字符串拼接,而不是a += b這種形式。由於join將保證這個過程的時間複雜度爲線性的,效率更高。道理不少人都知道,可是大多數人仍是喜歡用「+」,由於這個實在太簡潔了。其實不少語言都提供了拼接字符串的方法或者相應的類,良好編程習慣從拼接字符串開始。編程

2. 異常類型:基於類的異常老是好過基於字符串的異常。咱們最好構造一個基於Exception的子類。
當拋出一個異常的時候,使用」raise ValueError(‘message’)」替代」raise ValueError, ’message’」的形式。
app

3. None判斷:判斷一個實例變量是否爲空的時候,應該老是用’is’或者’is not’,而不要使用相等操做符。性能

4. 對象類型判斷:對象類型的比較應該始終用isinstance()代替直接比較類型。例如:
使用if isinstance(obj, int): 而不是 if type(obj) is type(1):
spa

5. 字符串先後綴判斷:在檢查前綴或後綴時避免對字符串進行切片。用startswith()和endswith()代替,由於它們是明確的而且錯誤更少。例如:
使用if foo.startswith('bar'): 替代 if foo[:3] == 'bar':
對象

6. 變量值交換:在其餘語言中,咱們常常這樣交換兩個變量的值。t=a; a=b; b=t;
可是在Python中,咱們還有一個簡單的辦法,a, b = b, a,而且這種方法更快,更酷。
內存


7. 列表解析(List Comprehension)List Comprehension是在Python2.0版本中加進入的,是一種更高效、簡潔的for結構替代品,做爲新手寫上幾個後就對它愛不釋手,驚呼太好用了。
例子:將原始列表中的全部元素進行某種操做後賦值給新的列表。
若是用for循環,代碼以下:
oldlist = [] 
for item in oldlist: 
newlist.append(func(item))
若是使用List Comprehension,代碼以下:
newlist = [func(item) for item in oldlist]
咱們明顯看到差異,3行變一行,代碼可讀性加強,並且性能也提高不少,聽說基本能夠達到C語言的速度。
List Comprehension還支持過濾功能,在列表生成過程當中套用for if字句,很是好用。示例以下:
evens = [even for even in range(10) if even % 2 == 0]
只須要一行,就將獲得0到9的數字中的全部偶數,過濾掉了奇數。

8. 生成器表達式(Generator Expression):Python2.4中引入了Generator Expression。它功能上相似於List Comprehension,這你就要問了,爲何要加入這個呢。由於Generator Expression更加高效,避免了生成整個列表,改善性能及內存佔用,取而代之的是返回一個generator object,經過它迭代的返回列表中的每個值。
並且Generator Expression的使用方法也很簡單,就是將List Comprehension中的中括號[]改爲小括號(),示例以下:
newlist = (func(item) for item in oldlist)
這個返回的newlist其實並非一個list,而是前面提到的generator object,能夠理解爲列表的一個迭代器,相似於C++中的iter。 能夠經過newlist.next()迭代得到列表中的每一項。
List Comprehension和Generator Expression實在是Python中的亮點,簡潔高效,必定要常常用、時時用、秒秒用。
字符串

相關文章
相關標籤/搜索