तुलना मैं एक 2 डी सूची जहां प्रत्येक "पंक्ति" आकार 2 की है क्रमित करना चाहते हैं, उदाहरण के लिए की तरहक्रमबद्ध किया गया समारोह का उपयोग कर समारोह
[[2,5],[2,3],[10,11]]
ये पंक्तियां, वास्तव में पर्वतमाला प्रतिनिधित्व करते हैं तो इसका हमेशा [एक , बी] जहां < = बी
मैं इसे इस तरह से सॉर्ट करना चाहता हूं, सूची का प्रत्येक तत्व 2-सूची है, मेरे पास (प्राथमिकता के अनुसार) होगा: [ए 1, बी 1] की तुलना में [ए 2, बी 2]
1. If a1 < a2 do not permute
2. If a1 > a2 permute
3. If a1 == a2 then permute if (b1 - a1) > (b2 - a2)
मुझे बेवकूफ लगता है कि पाइथन तुलनात्मक कार्यों के लिए अब और अनुमति नहीं देता है। इसके बजाय यह एक महत्वपूर्ण कार्य का उपयोग करता है। कोई तरीका नहीं है कि मैं इसके साथ एक वैध कुंजी बना सकता हूं क्योंकि मैं दो मानकों पर अपनी तुलना का आधार करता हूं, 'ए' का संख्यात्मक मूल्य (जो प्रचलित होता है) और फिर सीमा (बी - ए) की लंबाई।
मैं इसे कैसे हल कर सकता हूं? मेरा मतलब है, दो बार सॉर्ट किए बिना() या कुछ, जो मेरी राय में सादा बदसूरत है।
क्या यह भी संभव है? या क्या मैं कुछ नहीं देख रहा हूं?
धन्यवाद!
लागू अजगर 3.3.3 पर छाँटे गए जब (तत्व, सीएमपी = समारोह) यह देता है मुझे " 'सीएमपी' इस समारोह के लिए कोई अमान्य कीवर्ड तर्क है" – Yannick
बनाने के लिए है [डॉक्स] (https://docs.python.org/3/howto/sorting.html) 'key 'रूपांतरण फ़ंक्शन में' cmp' 'प्रदान करते हैं लेकिन यह सब सुंदर नहीं है। –
आप आंतरिक सूची के लिए कक्षा भी बना सकते हैं और ['__cmp__'] ओवरराइड कर सकते हैं (https://docs.python.org/2/reference/datamodel.html#object.__cmp__) फ़ंक्शन –