पाइथन में, मैं लंबोदर के साथ डेट करने की कोशिश कर रहा हूं। मैं अपना त्रुटि संदेश नहीं समझ सकता। संदेश है:
<lambda>() takes exactly 1 argument (2 given)
मेरे पास जो लाइन है
a = sorted(a, lambda x: x.modified, reverse=True)
पाइथन में, मैं लंबोदर के साथ डेट करने की कोशिश कर रहा हूं। मैं अपना त्रुटि संदेश नहीं समझ सकता। संदेश है:
<lambda>() takes exactly 1 argument (2 given)
मेरे पास जो लाइन है
a = sorted(a, lambda x: x.modified, reverse=True)
जवाबों:
उपयोग
a = sorted(a, key=lambda x: x.modified, reverse=True)
# ^^^^
पायथन 2.x पर, sortedइस क्रम में फ़ंक्शन अपने तर्क देता है:
sorted(iterable, cmp=None, key=None, reverse=False)
तो इसके बिना key=, आपके द्वारा पास किए जाने वाले फ़ंक्शन को एक cmpफ़ंक्शन माना जाएगा जो 2 तर्क लेता है।
lambdaएक अन्य पैरामीटर के साथ आपूर्ति कर रहा है क्योंकि एक cmpफ़ंक्शन 2 लेता है?
cmp, एक तुलनित्र फ़ंक्शन दो तर्क लेता है। यदि आप निर्दिष्ट नहीं करते हैं कि आप एक पास कर रहे हैं key, तो यह फ़ंक्शन पैरामीटर क्रम से माना जाता है कि आप एक तुलनित्र पास कर रहे हैं। आपका लैम्ब्डा एक पैरामीटर लेता है, इसलिए एक वैध तुलनित्र नहीं है और यही त्रुटि कहती है।
lst = [('candy','30','100'), ('apple','10','200'), ('baby','20','300')]
lst.sort(key=lambda x:x[1])
print(lst)
यह निम्नानुसार प्रिंट करेगा:
[('apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')]
अजगर सूची में डेटा को सॉर्ट करने के दो अंतर्निहित तरीके हैं:
sort() — A method that modifies the list in-place
sorted() — A built-in function that builds a new sorted list from an iterable
अपनी आवश्यकता के आधार पर आप इन दोनों में से चुन सकते हैं:
यदि आप मूल सूची रखना चाहते हैं, तो आप क्रमबद्ध फ़ंक्शन का उपयोग कर सकते हैं या यदि आपको मूल सूची की आवश्यकता नहीं है, तो आप क्रमबद्ध फ़ंक्शन का उपयोग कर सकते हैं।
सॉर्ट या सॉर्ट करने से पहले, हमें लैम्ब्डा को समझने की आवश्यकता है।
एक लंबोदर एक अनाम फ़ंक्शन है और एक अनाम फ़ंक्शन एक फ़ंक्शन है जिसे एक नाम के बिना परिभाषित किया गया है, यह पोस्ट इसे बहुत अच्छी तरह से समझाती है।
https://www.programiz.com/python-programming/anonymous-function
इन-लाइन को कॉल करने के लिए लैम्ब्डा फ़ंक्शन अच्छे हैं क्योंकि उनके पास केवल एक अभिव्यक्ति है जिसका मूल्यांकन किया जाता है और वापस किया जाता है। वे एक लंबोदर के लिए वाक्य रचना है:
लंबोदर तर्क: अभिव्यक्ति
आइए देखें कि सॉर्ट किए गए फ़ंक्शन का उपयोग कैसे करें:
student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2])
आउटपुट: [('डेव', 'बी', 10), ('जेन', 'बी', 12), ('जॉन', 'ए', 15)]
यहाँ हम यह देख सकते हैं कि छात्र_टुप्लस होने पर ट्यूपल्स को मुख्य पैरामीटर के आधार पर क्रमबद्ध किया गया है बशर्ते कि वह छात्र है [2]।