2009-07-28 103 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])