2012-04-02 12 views
19

क्यों एक दूसरे के ऊपर का इस्तेमाल किया जाएगाअजगर अंतर और list.sort (रिवर्स = सच)

mylist = reversed(sorted(mylist)) 

के बीच का अंतर बनाम

mylist = sorted(mylist, reverse=True) 

क्या है?

ऐसे

mylist.sort(key=itemgetter(1)) 
mylist.sort(key=itemgetter(0)) 
mylist.reverse() 

के रूप में एकाधिक स्तंभों पर एक स्थिर प्रकार के लिए कैसे के बारे में इस

mylist.sort(key=itemgetter(1), reverse=True) 
mylist.sort(key=itemgetter(0), reverse=True) 

रूप में ही है?

उत्तर

17

आपने बिल्कुल पर अंतर किया है। चूंकि Timsort स्थिर है, इस तरह के रिवर्स बनाम रिवर्स बनाम सॉर्टिंग रिवर्स ऑर्डर में तत्वों को छोड़ देगा।

>>> s = ((2, 3, 4), (1, 2, 3), (1, 2, 2)) 
>>> sorted(s, key=operator.itemgetter(0, 1), reverse=True) 
[(2, 3, 4), (1, 2, 3), (1, 2, 2)] 
>>> list(reversed(sorted(s, key=operator.itemgetter(0, 1)))) 
[(2, 3, 4), (1, 2, 2), (1, 2, 3)] 
+0

धन्यवाद, सामान्य उपयोग के मामलों के लिए शायद इससे कोई फर्क नहीं पड़ता। – Gladius

+1

सही। यदि आप पूरी चीज को किसी भी तरह से क्रमबद्ध कर रहे हैं तो वे एक ही परिणाम देंगे। –

0

आपको क्रमबद्ध() के लिए एक सूची मिलती है। लेकिन उलट() एक इटरेटर

1

दिलचस्प आविष्कार है: list(reversed(sorted(reversed(data)))) == sorted(data, reverse=True)

अन्य उत्तरदाता सही हैं कि अंतर को स्थिरता के साथ करना है जो समान कुंजी के क्रम को संरक्षित करता है। और क्रमबद्ध() एक सूची लौटाते हुए उलट() एक पुनरावर्तक देता है।

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