2012-09-21 20 views
11

कुछ max(len(s1), len(s2)) की तरह कुछ अधिकतम लंबाई लौटाएगा। लेकिन अगर मैं वास्तव में यह जानना चाहता हूं कि कौन सी स्ट्रिंग लंबी है, और शायद इसे किसी अन्य स्ट्रिंग में सहेजें, तो यह कैसे किया जाता है? max(s1,s2) स्ट्रिंग को बड़े मान के साथ वापस करने लगता है, लेकिन जरूरी नहीं कि सबसे लंबा।मुझे पायथन में सबसे लंबी स्ट्रिंग कैसे मिलती है?

नोट: इसे सूचियों या सरणी के बिना किया जाना है।

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

उत्तर

38

max एक key समारोह जो max का कारण बनता है बुद्धि के लिए प्रत्येक val के लिए अधिकतम key(val) लेने के लिए, फिर भी अभी भी val लौटने के लिए, ले जाता है प्रत्येक स्ट्रिंग की आवश्यकता होती है:

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

डाउनवोट क्यों? क्या यह सवाल का जवाब नहीं देता है? – Joe

+1

यह काम करता है, लेकिन यह मूर्खतापूर्ण नहीं है क्योंकि सटीक रूप से कार्यक्षमता, अधिक सामान्य और उपयोगी रूप में, पहले से ही बिल्टिन के बीच मौजूद है। – delnan

+1

शायद आपको यह कहने के लिए सवाल संपादित करना चाहिए कि "ऐसा करने का एक सही तरीका क्या है?"। – Joe

1

बस एक साधारण सशर्त अभिव्यक्ति की लंबाई के आधार:

संबंधित मुद्दे