我學習Python並在解決方案時練習,function filter()返回空列表,我無法理解爲什麼。下面是我的源代碼:Python練習中的高階函數
"""
Using the higher order function filter(), define a function filter_long_words()
that takes a list of words and an integer n and returns
the list of words that are longer than n.
"""
def filter_long_words(input_list, n):
print 'n = ', n
lengths = map(len, input_list)
print 'lengths = ', lengths
dictionary = dict(zip(lengths, input_list))
filtered_lengths = filter(lambda x: x > n, lengths) #i think error is here
print 'filtered_lengths = ', filtered_lengths
print 'dict = ',dictionary
result = [dictionary[i] for i in filtered_lengths]
return result
input_string = raw_input("Enter a list of words\n")
input_list = []
input_list = input_string.split(' ')
n = raw_input("Display words, that longer than...\n")
print filter_long_words(input_list, n)
Python是不是口齒不清(不會寫這樣有代碼或者雖然),如果你不」爲獲得最難解決問題的解決方案而獲得額外的積分,請使用簡單的,慣用的方法:'[input_list中的單詞如果len(word)> n]'更清晰並且更容易理解no? – Voo
@Voo:是的,但鍛鍊確實說他使用'filter()'。 –
@Lennart點,家庭作業可能很愚蠢,但教授仍然喜歡,如果你這樣做,就像他們說的那樣);仍然悲慘地教人們蟒蛇這種方式。 – Voo