2010-01-14 35 views

回答

11

絕對是一個列表理解的情況下:

m = [row for row in l if 'a' in row[0]] 

在這裏,我把你的「有‘A’第一要素」的字面,何處使用in運營商。如果你想限制這「有‘A’第一要素」(一個非常不同的事情與您實際寫的 - - !),然後

m = [row for row in l if 'a' == row[0]] 

是更喜歡它;-)。

1
m = [i for i in l if i[0] == 'a'] 
0

隨着filter功能:

m = filter(lambda x: x[0] == 'a', l) 

或列表的理解:

m = [x for x in l where x[0] == 'a'] 
0

出了什麼問題只是:

m = [i for i in l if i[0] == 'a'] 

或者:

m = filter(lambda x: x[0] == 'a', l) 

我懷疑這兩者之間的差異將會是明顯的性能。使用最方便的方式。我不喜歡lambda s,但filter可以用itertools.ifilter代替較大的列表(如果這是個問題),但是您也可以將列表理解更改爲生成器(將[]更改爲())以獲得相同的一般結果。除此之外,它們可能完全相同。