2009-07-28 191 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

+2

@LarsOn:あなた自身の質問にはコメントしないでください。コメントを削除し、新しい情報で質問を更新してください。 –

答えて

34

: 私はこのような最初の単語を見つけることができます

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

split()は、(空白で区切って)言葉に文字列を分割します。 max()は、組み込みのlen()関数、すなわち文字列の長さを使用して最大の要素を見つけることができます。ここで

+3

+ 1本当に優雅なコード(少なくともJava開発者のために) – dfa

+2

+1優れた解決策 – ThomasH

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

ああ、さらに良い:o.i = ''; len(x)> len(o.i)]、o.i)の場合、s.split()のxの[setattr(o、 'i'、x) – ThomasH

0

別の方法:

a="a aa aaa aa" 
b=a.split() 
c=sorting(b,key=len) 
print(c[-1])  
関連する問題