2012-09-21 2 views
11

max(len(s1), len(s2))과 같은 값은 최대 길이 만 반환합니다. 그러나 실제로 어떤 문자열이 더 길 것인지를 찾고 싶다면 다른 문자열에 저장하면 어떻게됩니까? max(s1,s2)은 더 큰 값을 가진 문자열을 반환하는 것으로 보이지만 반드시 가장 길지는 않습니다.파이썬에서 가장 긴 문자열을 찾으려면 어떻게합니까?

참고 :이 작업은 목록이나 배열없이 수행해야합니다. 의 길이에 따라

>>> max("foobar", "angstalot") 
'foobar' 
>>> max("foobar", "angstalot", key=len) 
'angstalot' 

답변

38

max 재치에, 각 val의 최대 key(val)을한다고해도 val을 반환 max을 일으키는 key 기능을한다 각 문자열은 필요한 모든 것입니다 :

longest = s1 if len(s1) > len(s2) else s2 
0
def longest(a, b): 
    if len(a) > len(b): 
     return a 
    return b 
+0

왜 downvote? 이 질문에 대답하지 않습니까? – Joe

+1

그것은 작동하지만, 더 일반적이고 유용한 형태의 기능이 내장 된 것들 사이에 이미 존재하기 때문에 관용적이지 않습니다. – delnan

+1

어쩌면 "이 일을하는 것이 진정한 방법입니까?"라는 질문을 편집해야 할 것입니다. – Joe

관련 문제