如何用Python找到最长的单词?

1 投票
5 回答
21060 浏览
提问于 2025-04-15 13:13

我该如何使用Python从一组单词中找到最长的单词呢?我可以这样找到第一个单词:

'a aa aaa aa'[:'a aa aaa aa'.find(' ',1,10)]

'a'

rfind is another subset

'a aa aaa aa'[:'a aa aaa aa'.rfind(' ',1,10)]

'a aa aaa'

5 个回答

1

我原以为它的意思是像下面的代码那样,输出字符串中最长的单词。在这个例子中,最长的单词是“sentence”。不过,只要把返回的内容改成return(len(s)),那么它就会输出最长单词的字符数,也就是8个字符。

def longest_word(text):
    s = max(text.split(), key = len)
    return(s)

if __name__ == "__main__":
    print(longest_word("This is a sentence with words and such."))
2

这是一个属于“你能把它搞得多复杂”的例子,同时也违反了不应该涉及自定义类的要求:

class C(object): pass
o = C()
o.i = 0
ss = 'a aa aaa aa'.split()
([setattr(o,'i',x) for x in range(len(ss)) if len(ss[x]) > len(ss[o.i])], ss[o.i])[1]

有趣的是,你在计算列表的时候,使用了一个对象的成员来保持状态,最后丢掉了这个列表,只用了这个过程中的副作用。

不过请务必使用上面提到的max()的解决方案哦 :-) .

39

如果我理解你的问题没错的话:

>>> s = "a aa aaa aa"
>>> max(s.split(), key=len)
'aaa'

split() 是用来把字符串分割成单词的(通过空格来分隔);而 max() 是用来找出最大的元素,它使用内置的 len() 函数,也就是字符串的长度,来判断什么是“最大”。

撰写回答