如何在Python中找到最长的单词?

5

我是一个Python新手,目前遇到了一个问题。我需要输入一句话并找出其中最长的单词。如果有两个或更多长度相同的单词,则返回第一个单词。以下是我目前的代码:

def find_longest_word(word_list):  
    longest_word = ''  
    for word in word_list:    
          print(word, len(word))  


words = input('Please enter a few words')  
word_list = words.split()  
find_longest_word(word_list)  

但我不知道如何比较这些列表并返回第一个/最长的单词。

3个回答

24

使用max Python内置函数,将len函数作为key参数传入。它将迭代word_list应用len函数,然后返回最长的那一个。

def find_longest_word(word_list):  
    longest_word =  max(word_list, key=len)
    return longest_word

我在寻找一行代码! - havryliuk

5

不应该打印每个单词的长度。相反,比较当前wordlongest_word的长度。如果word更长,更新longest_wordword。当你遍历所有单词时,最长的单词将存储在longest_word中。

然后可以打印或返回它。

def find_longest_word(word_list):
    longest_word = ''
    for word in word_list:
        if len(word) > len(longest_word)
            longest_word = word
    print longest_word

编辑: Levi的回答更加优雅,这是一个简单的for循环解决方案,与您尝试自己制作的解决方案有些类似。

谢谢。我的老师不是最好的(他只是说“读这个,自己想办法”)。您能否解释一下为什么有最长单词= ''和if语句?(包括最长单词= word) - python paradise
@pythonparadise 我可以试试 :). longest_word 保存当前最长的单词,在整个执行过程中都是如此。在开始时,它被设置为空字符串''(请注意,使用的是2个',而不是1个")。然后在for循环中,对于每个单词,我们比较正在检查的当前单词的长度和迄今为止找到的最长单词的长度(最初为零长度的空字符串)。如果我们正在检查的当前单词比之前找到的最长单词更长,我们就将 longest_word 设置为该单词。这样,所有未来的单词都将与我们刚刚找到的新的 longest_word 进行比较。 - Froziph

0
将每个单词与迄今为止最长的单词进行比较,从长度为0开始。如果单词比迄今为止最长的单词更长,则更新该单词和最长长度。应该类似于这样:
def find_longest_word(word_list):  
    longest_word = ''  
    longest_size = 0   
for word in word_list:    
    if len(word) > longest_size
        longest_word = word
        longest_size = len(word)      
return longest_word

words = input('Please enter a few words')  
word_list = words.split()  
find_longest_word(word_list)  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接