返回的是生成器對象,生成器比列表更加節省內存
帶索引位置的循環遍歷>>>colors = ['red', 'green', 'blue', 'yellow']>>>for i, color in enumerate(colors):... print (i, 'mapping', color)字符串連接>>>colors = ['red', 'green', 'blue', 'yellow']>>>print( ', ', join( colors ) )join 是一種更加高效的字符串連接方式,使用 + 操作時,每執行一次+操作就會導致在內存中生成一個新的字符串對象,遍歷幾次有幾個字符串生成,造成無謂的內存浪費。而用 join 方法整個過程只會產生一個字符串對象。
打開/關閉文件 >>>with open('data.txt') as f: ... data = f.read()列表推導式 result = []for i in range( 10 ): s = i * 2 result.append( s )應該寫成:
[ i * 2 for i in range( 10 ) ]裝飾器
裝飾器可以把與業務邏輯無關的代碼抽離出來,讓代碼保持干凈清爽,而且裝飾器還能被多個地方重復利用。比如一個爬蟲網頁的函數,如果該 URL 曾經被爬過就直接從緩存中獲取,否則爬下來之后加入到緩存,防止后續重復爬取。
def web_lookup(url, saved={}): if url in saved: return saved[url] page = urllib.urlopen(url).read() saved[url] = page return pagepythonic
import urllib.requestdef cache(func): saved = {} def wrapper(url): if url in saved: return saved[url] else: page = func(url) saved[url] = page return page return wrapper@cachedef web_lookup(url): return urllib.urlopen(url).read()列表的操作列表對象(list)是一個查詢效率高于更新操作的數據結構,比如刪除一個元素和插入一個元素時執行效率就非常低,因為還要對剩下的元素進行移動
names = ['raymond', 'rachel', 'matthew', 'roger', 'betty', 'melissa', 'judith', 'charlie']names.pop(0)names.insert(0, 'mark')pythonic
from collections import dequenames = deque(['raymond', 'rachel', 'matthew', 'roger', 'betty', 'melissa', 'judith', 'charlie'])names.popleft()names.appendleft('mark')deque 是一個雙向隊列的數據結構,刪除元素和插入元素會很快
序列解包p = 'vttalk', 'female', 30, 'python@QQ.com'name = p[0]gender = p[1]age = p[2]email = p[3]pythonic
name, gender, age, email = p參考資料:知乎 鏈接:https://zhuanlan.zhihu.com/p/25518608
新聞熱點
疑難解答