2016-12-15 53 views
0

假設我們有一個Python中的整數列表L和一個函數F,它取整數並返回一個布爾值。我有以下代碼:在列表中搜索並根據謂詞在python中做搜索

for i in L: 
    if F(i): 
     do_whatever(i) 

有在巨蟒在一條線這樣的方式,或者說,一個更Python的方法呢?

+1

'[富(ⅰ),其中i爲L如果巴(I)]' –

+1

一行:'用於i的L:如果F(I) :do_whatever(i)' –

+4

你目前的做法似乎很pythonic;不是一切都是爲了1行 –

回答

1

使用內置在python功能:

map(do_whatever, filter(F, L)) 
+0

儘管這確實創建了一個新的列表(或者它是一個迭代器),它可能不是必需的。我會最初使用map,然後考慮後來的性能問題,如果它成爲問題。而在python3中,你得到了一個迭代器,所以你必須使用它來做任何事情。 –