जब आप एक पास करते lambda
हैं sort
, तो आपको एक पूर्णांक वापस करने की आवश्यकता होती है, बूलियन नहीं। इसलिए आपके कोड को इस प्रकार पढ़ना चाहिए:
xs.sort(lambda x,y: cmp(len(x), len(y)))
ध्यान दें कि cmp एक बिल्टइन फ़ंक्शन है, जो cmp(x, y)
-1 रिटर्न देता है यदि 0 x
से कम है y
, यदि 0 के x
बराबर है y
, और 1 यदि x
इससे अधिक है y
।
बेशक, आप इसके बजाय key
पैरामीटर का उपयोग कर सकते हैं :
xs.sort(key=lambda s: len(s))
यह sort
कुंजी फ़ंक्शन को वापस करने के आधार पर ऑर्डर करने की विधि बताता है।
संपादित करें: नीचे दिए गए संकेत के लिए बाल्फा और रुस्लान के लिए धन्यवाद कि आप len
सीधे कार्य के लिए मुख्य पैरामीटर के रूप में पास कर सकते हैं , इस प्रकार एक की आवश्यकता को समाप्त कर सकते हैं lambda
:
xs.sort(key=len)
और जैसा कि रुस्लान नीचे बताते हैं, आप विधि के बजाय बिल्ट-इन सॉर्ट किए गए फ़ंक्शन का उपयोग कर सकते हैं list.sort
, जो मौजूदा एक-स्थान को सॉर्ट करने के बजाय एक नई सूची बनाता है:
print(sorted(xs, key=len))
lambda
; बस का उपयोग करेंkey = len