2016-12-17 100 views
0

我想創建一個函數,它將返回以字母「p」開頭的單詞列表。我得到一個「TypeError:一個整數是必需的」錯誤。我不確定在哪裏需要整數,或者爲什麼。Python - TypeError:需要一個整數(篩選器功能)

def filter_words(word_list, letter): 
    return filter(list().pop([0]) == letter, word_list) 

filter_words(["banana", "apple", "pear", "grapefruit", "pineapple",\ 
"orange", "plum", "kiwi"], "p") 

我要做的輸出是[「梨」,「菠蘿」,「李子」]。

非常感謝!

+0

不是'filter'函數的第一個參數嗎?與您遇到的錯誤不符,但我無法弄清楚您的代碼應該如何工作。 – Carcigenicate

+0

你得到的錯誤是來自pop方法,它需要整數參數,而不是列表,即使你修復了你會得到其他錯誤,並且沒有提到過濾器的第一個參數需要是一個函數 – Copperfield

回答

0

我不太清楚你的意圖是用filter的第一個參數。過濾器需要一個函數,因爲它是第一個參數,其中傳遞的參數是列表中的每個項目(本例中爲單詞)。這是對我工作的版本:它接受一個單詞,並檢查它的第一個字母

def filter_words(word_list, letter): 
    return filter(lambda word: word[0] == letter, word_list) 

print(filter_words(["banana", "apple", "pear", "grapefruit", "pineapple",\ 
"orange", "plum", "kiwi"], "p")) 

注意的第一個參數是怎樣一個函數(拉姆達)。

另請注意,我很少寫Python,並且在休息時很快將它寫在手機上,所以可能有更好的方法來編寫它。由於它們沒有第0個字符,因此這將在空單詞上突破。它應該給你一個filter如何工作的想法。

+0

是的,這很好。我猜我認爲這個列表是我的功能,但這更有意義。謝謝你的澄清。 – noob112358

+0

@ noob112358 Np。如果它回答你的問題,你可以接受它說它已經解決,並且贊成它是否對你有幫助。 – Carcigenicate