2012-09-21 2 views
11

So etwas wie max(len(s1), len(s2)) gibt nur die maximale Länge zurück. Aber wenn ich tatsächlich herausfinden will, welche Saite länger ist, und sie vielleicht in einer anderen Saite speichern, wie wird das gemacht? max(s1,s2) scheint die Zeichenfolge mit dem größeren Wert zurückzugeben, aber nicht unbedingt die längste.Wie finde ich die längste Zeichenfolge in Python?

Hinweis: Dies muss ohne Listen oder Arrays erfolgen.

Antwort

38

max nimmt eine key Funktion, die max die max key(val) für jeden val nehmen verursacht, aber immer noch die val zurückkehrt, nämlich:

>>> 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

Warum der Downvote? Beantwortet das nicht die Frage? – Joe

+1

Es funktioniert, aber es ist nicht idiomatisch, weil genau diese Funktionalität in einer allgemeineren und nützlicheren Form bereits unter den Builtins existiert. – delnan

+1

Vielleicht sollten Sie die Frage bearbeiten, um zu sagen, "Was ist der einzig wahre Weg, dies zu tun?". – Joe

1

nur einen einfachen bedingten Ausdruck basierend auf der Länge von Jede Zeichenfolge ist alles was benötigt wird:

longest = s1 if len(s1) > len(s2) else s2