2016-12-17 3 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") 

出力は["pear"、 "pineapple"、 "plum"]です。

ありがとうございました!

+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

@ noob112358Np。それがあなたの質問に答えるなら、あなたはそれが解決されたと言ってそれを受け入れることができ、それがあなたを助けたらアップアップします。 – Carcigenicate

関連する問題