2013-04-30 13 views
9

मुझे लगता है कि यह सॉर्टिंग में उपयोग किया जाता है, लेकिन कोड की इस पंक्ति के व्यक्तिगत घटकों का वास्तव में क्या अर्थ है?इसका क्या अर्थ है: key = lambda x: x [1]?

key=lambda x: x[1] 

क्या lambda, x:, [1]x[1] आदि में ...

उदाहरण

max(gs_clf.grid_scores_, key=lambda x: x[1]) 

sort(mylist, key=lambda x: x[1]) 
+0

ईही! 1 घंटे पहले पूछे गए एक अलग सवाल का मेरा जवाब यही है! : डी – fog

उत्तर

13

lambda प्रभावी रूप से एक इनलाइन समारोह बनाता क्यों है क्या। उदाहरण के लिए, आप इस उदाहरण को फिर से लिखने कर सकते हैं:

max(gs_clf.grid_scores_, key=lambda x: x[1]) 

एक नामित समारोह का उपयोग करना:

def element_1(x): 
    return x[1] 

max(gs_clf.grid_scores_, key=element_1) 

इस मामले में, max() कि सरणी जिसका दूसरा तत्व (x[1]) में तत्व वापस आ जाएगी सब से बड़ा है अन्य तत्वों के दूसरे तत्वों का। इसे phrasing का एक और तरीका यह है कि फ़ंक्शन कॉल का तात्पर्य है: x[1] का उपयोग करके कुंजी के रूप में अधिकतम तत्व लौटाएं।

10

lambdaanonymous function का प्रतीक है। इस मामले में, यह फ़ंक्शन x एकल तर्क लेता है और x[1] देता है (यानी x में अनुक्रमणिका 1 पर आइटम)।

अब sort(mylist, key=lambda x: x[1])mylistkey के मूल्य के आधार पर सूची के प्रत्येक तत्व पर लागू होने के प्रकार के आधार पर । इसी तरह, max(gs_clf.grid_scores_, key=lambda x: x[1]) प्रत्येक तत्व के लिए key द्वारा जो कुछ भी लौटाया जाता है, उसके संबंध में gs_clf.grid_scores_ का अधिकतम मान देता है।

मुझे यह भी इंगित करना चाहिए कि यह विशेष कार्य पहले से ही पुस्तकालयों में से एक में शामिल है: operator। विशेष रूप से, operator.itemgetter(1) आपके key के बराबर है।

0
distances.sort(key=lambda x: x[1]) 

यह कार्य है। और यहां एक्स सूची है, जिसमें हम x[1] जोड़ रहे हैं i.e क्रमबद्ध फ़ंक्शन में सूची का दूसरा तत्व। तो, मूल रूप से हम सॉर्ट फ़ंक्शन में प्रत्येक सूची के दूसरे तत्व (यानी x [1]) जोड़ रहे हैं। मुझे आशा है कि आप इसे समझ लेंगे।

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