2012-09-21 5 views
11

Qualcosa come max(len(s1), len(s2)) restituirà solo la lunghezza massima. Ma se in realtà voglio scoprire quale stringa è più lunga, e forse salvarla su un'altra stringa, come è fatto? max(s1,s2) sembra restituire la stringa con il valore maggiore, ma non necessariamente la più lunga.Come trovo la stringa più lunga in Python?

Nota: questo deve essere fatto senza liste o array.

risposta

38

max prende una funzione key che provoca max a prendere il massimo key(val) per ogni val, ma ancora restituire il val, vale a dire:

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

Perché il downvote? Questo non risponde alla domanda? – Joe

+1

Funziona, ma non è un idioma perché precisamente quella funzionalità, in una forma più generale e utile, esiste già tra i builtin. – delnan

+1

Forse dovresti modificare la domanda per dire "qual è l'unico vero modo per farlo?". – Joe

1

Basta una semplice espressione condizionale in base alla lunghezza del ogni stringa è tutto ciò che è necessario:

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