2012-09-21 92 views
11

Algo como max(len(s1), len(s2)) solo devolverá la longitud máxima. Pero si realmente quiero saber qué cadena es más larga, y tal vez guardarla en otra cadena, ¿cómo se hace? max(s1,s2) parece devolver la cadena con el valor más grande, pero no necesariamente el más largo.¿Cómo puedo encontrar la cadena más larga en Python?

Nota: esto tiene que hacerse sin listas o matrices.

Respuesta

38

max toma una función key que causa max a tomar el máximo key(val) para cada val, y aún así devolver el val, a saber:

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

¿Por qué el voto a favor? ¿Esto no responde la pregunta? – Joe

+1

Funciona, pero no es idiomático porque precisamente esa funcionalidad, en una forma más general y útil, ya existe entre los builtins. – delnan

+1

Tal vez debería editar la pregunta para decir "¿cuál es la única forma verdadera de hacer esto?". – Joe

1

Sólo un simple expresión condicional basado en la longitud de cada cadena es todo lo que se necesita:

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