2012-09-21 19 views
11

max(len(s1), len(s2))のようなものは最大の長さしか返しません。しかし、実際にどの文字列が長いかを調べ、別の文字列に保存したいのであれば、どうしたらいいですか? max(s1,s2)は、より大きな値を持つ文字列を返すように見えますが、必ずしも最長である必要はありません。Pythonで最も長い文字列を見つけるにはどうすればいいですか?

注:これはリストや配列なしで行う必要があります。

答えて

38

maxは、各valのための最大key(val)を取るためにmaxを引き起こしkey関数を受け取り、それでもウィットに、valを返す:

>>> max("foobar", "angstalot") 
'foobar' 
>>> max("foobar", "angstalot", key=len) 
'angstalot' 
0
def longest(a, b): 
    if len(a) > len(b): 
     return a 
    return b 
+0

なぜdownvoteですか?これは質問に答えませんか? – Joe

+1

これは機能しますが、より一般的で有用な形式の機能が組み込み関数の間に既に存在するため、慣用ではありません。 – delnan

+1

質問を編集して「これを行うには本当に1つの方法は?」と言わなければなりません。 – Joe

1

の長さに基づいて、単純な条件式各文字列は必要なすべてです:

longest = s1 if len(s1) > len(s2) else s2 
関連する問題