python版本:2.7.4
主機環境:gentoo with linux kernel 3.4.36
列表解析完成的功能可以使用for迴圈替代或者map呼叫來替代。對於剛開始使用python的初學者,通常使用簡單的for迴圈,邏輯清晰,這樣會容易理解,特別是在巢狀的時候。
效能對比:map呼叫比等效的for迴圈要快兩倍,而列表解析往往比map解析要稍快一些。
dex = [x ** 2 for x in range(10)]print dex
dex1 = list(map(lambda x:x ** 2,range(10)))print dex1
第乙個就是使用的列表解析產生的例子。第二個是使用map呼叫產生列表,第三個是使用for迴圈產生的列表。
之所以列表解析速度會快,那是因為map和列表解析在直譯器中以c語言的速度來執行的,比python的for迴圈**在pvm中步進要快的多。
類表解析中也可以新增判斷條件,例項如下:
ifdex = [x ** 2 for x in range(10) if x % 2 == 0]print ifdex
ifdex1 = list(filter((lambda x:x % 2 == 0),map(lambda x:x ** 2,range(10))))print ifdex1
什麼是生成器?生成器是為了在需要的時候才產生結果,而不是立即產生結果。這樣會節省記憶體,而不用把所有的記錄都載入到記憶體,並且允許計算時間分散到各個結果請求。
例項如下:
dex3 =for x in generator(10):
print dex3
生成器的定於如下:
def generator(n):生成器支援迭代器協議,內建next函式,通過dir(x)檢視如下:for i in range(10):
yield i
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'gi_code', 'gi_frame', 'gi_running', 'next', 'send', 'throw']
python 列表解析式和生成器
可以根據已有列表,高效建立新列表的方式。列表解析是python迭代機制的一種應用,它常用於實現建立新的列表,返回的是乙個列表,因此用在中。列表解析式因編譯器進行優化,提高了效率,減少出錯,增加可讀性 示例1 生成乙個列表,元素0 9,對每乙個元素自增1後求平方返回新列表 常規寫法 new for i...
python列表解析
列表解析是乙個列表對映出另乙個列表,它的基本形式是乙個方括號裡面包含乙個for語句對乙個iterable物件迭代 expression for target1 in iterable1 if condition1 for targetn in iterablen if conditionn 上面是列...
python 列表解析
m 1,2,3 4,5,6 7,8,9 col2 row 1 for row in m 獲取列表m的每個元素的第二個元素的值組成的列表 print col2 print row 1 1 for row in m 獲取列表m的每個元素的第二個元素 1的值組成的列表 print row 1 for ro...