2016-12-17 4 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

Не первый аргумент для '' фильтрации 'функции? Не соответствует ошибке, которую вы получаете, но я не могу понять, как ваш код должен работать. – 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

Смежные вопросы