2017-06-16 17 views
-3
my_list = [3, 4, 7, 2, 9, 170] 

f = filter(lambda x: x%2==0, my_list) 

g = f(my_list) 

這個lambda引發了一個問題,它引發了一個「列表對象不可調用」的錯誤。這是一個非常簡單的λ,所以我不太清楚我在做什麼錯在這裏lambda在python中說的列表對象不可調用

+4

但過濾的結果是(在Python的2.X)的列表。不是過濾器,你在列表**上做了過濾。 –

+1

'f'是一個列表,你調用它就像它是一個函數'f(my_list)' – Szymon

+0

我不認爲你需要通過你的列表lambda'''f'''在第二遍 - '''f'''應該只包含你正在查找的過濾列表。 –

回答

7

你也許認爲f過濾,實在不行,f是過濾對my_list結果。這是中的list中的發生器(filter對象)。

但是,您可以構建一個過濾器,例如通過使用functoolspartial功能,如:

from functools import partial 

f = partial(filter,lambda x : x % 2 == 0) # construct a "filter" 

g = f(my_list) # filter my_list
+2

愛我一個好的部分 –

+0

那麼在這種情況下發生了什麼?我一直被困在一個小時或兩個小時的問題上,似乎無法弄清楚錯誤是否在我的最後。 #完成下面的功能。 F =拉姆達my_list:X%2 == 0,如果my_list '' 不f中.__ name__: 提高ValueError異常( '請寫lambda函數') my_list = json.loads(sys.stdin.readline ()) for f in(my_list): print(x) – a1letterword

+0

我只能編輯函數lambda。出於某種原因,我不斷得到一個錯誤,說my_list沒有被定義 – a1letterword

相關問題