如何用Python找到最长的单词?
我该如何使用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()
函数,也就是字符串的长度,来判断什么是“最大”。