2009-07-28 62 views
1

如何使用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' 
+2

这可能是最难理解我读过的问题。你正在寻找给定字符串中最长的单词,所以在你的例子中,这将是'aaa',对吧?!你想从使用内置插件的单个表达式获得它,而不需要创建自己的函数或类。这是你问题的本质吗? – ThomasH 2009-07-28 09:21:43

+2

@LarsOn:请不要评论你自己的问题。请删除评论并用新信息更新问题。 – 2009-07-28 10:12:13

回答

34

如果我正确理解你的问题:

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

split()分裂串入字(用空格隔开); max()找到使用内建len()函数(即字符串长度)的最大元素,作为找出“最大”意味着什么的关键。

+3

+1真正优雅的代码(至少对于Java开发人员来说) – dfa 2009-07-28 09:23:22

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()解决方案:-)。

0

另一种方法找到最长的单词字符串:

a="a aa aaa aa" 
b=a.split() 
c=sorting(b,key=len) 
print(c[-1])  
相关问题