2017-08-16 60 views
0

任何人都可以幫助我使用映射器函數和簡化器函數來查找文本文件中最小的單詞嗎?映射器在文本文件中查找最小單詞的函數

import sys #importing from the system 

smallest = None 
for line in sys.stdin: #taking input from the system   
    line = line.strip() #leaving the unwanted whitespaces     
    words = line.split("\t") #spliting the words with delimiter TAB 
smallest= min([len(word) for word in words]) #finding the smallest word 


print ('%s' % (smallest)) #printing the snallest word 
+0

所以有什麼問題? –

+0

請顯示一些輸入示例 –

+0

因此,您甚至不打印最小的單詞。相反,你正在打印最短的單詞的長度。 – Cuber

回答

0

我假設你想找到最短的單詞,而不使用列表理解。

min()接受用於比較的可選鍵。您可以使用lambda函數來獲取單詞的長度。

words = ['longest-------', 'medium-----', 'shortest-'] 
shortest = min(words, key=lambda x: len(x)) 
print(shortest) 

另一種方法可能是使用Python的built in sorted()。

words = ['longest-------', 'medium-----', 'shortest-'] 
shortest = sorted(words)[-1] 
print(shortest) 

有關內建功能的更多信息,請參見documentation

0

首先你DATAS追加到此列表k=['1111','222222','a',...]然後 你可以使用這個:

print reduce(lambda x ,y : x if len(x) < len(y) else y , k) 

,或者如果你不想使用lambda使用BIF功能列表:

min(word for word in k if word) 

這讓你在列表中最短的元素

+0

@Dipanjan Chowdhury測試此代碼 –