दिलचस्प पोस्ट
PHP में दशमलव से बेकार शून्य अंक निकालें SQL सर्वर में एक-से-एक रिश्ते को परिभाषित करना OpenCV के cvWaitKey () फ़ंक्शन क्या करता है? अनन्य मानों की गणना करें संपूर्ण लेआउट को ताज़ा करने के लिए कैसे मजबूर करें? PHP संकलित या व्याख्या की गई है? इनपुट प्रकार = फाइल केवल बटन दिखाएँ कैसे nth jQuery तत्व प्राप्त करने के लिए एक फ़ाइल का एक MD5 चेकसम उत्पन्न करना NSDictionary ऑब्जेक्ट के एक NSArray सॉर्ट करने का सबसे अच्छा तरीका? घुमाए गए आयत को रेखांकित करने के लिए कैसे (2 डी में सेटपिक्सल द्वारा) गिट शाखा पहुंच को प्रतिबंधित करने का एक तरीका है? मेवेन त्रुटि: मुख्य वर्ग org.codehaus.plexus.classworlds.launcher.Launcher को ढूंढ या लोड नहीं किया जा सका Android वैश्विक चर सूचक के विभिन्न स्तरों के लिए उपयोग करता है?

पायथन में एक क्रमबद्ध सरणी के सूचकांक कैसे प्राप्त करें

मेरे पास एक संख्यात्मक सूची है:

myList = [1, 2, 3, 100, 5] 

अब अगर मैं इस सूची को [1, 2, 3, 5, 100] प्राप्त करने के लिए सॉर्ट करता हूं मैं क्या चाहता हूं कि मूल सूची से तत्वों का सूचक क्रमबद्ध क्रम यानी [0, 1, 2, 4, 3] — एला MATLAB की सॉर्ट फ़ंक्शन है जो कि दोनों मूल्यों और सूचकांक देता है

वेब के समाधान से एकत्रित समाधान "पायथन में एक क्रमबद्ध सरणी के सूचकांक कैसे प्राप्त करें"

अगले जैसे कुछ:

 >>> myList = [1, 2, 3, 100, 5] >>> [i[0] for i in sorted(enumerate(myList), key=lambda x:x[1])] [0, 1, 2, 4, 3] 

enumerate(myList) आपको एक सूची देता है जिसमें enumerate(myList) (इंडेक्स, वैल्यू) है:

 [(0, 1), (1, 2), (2, 3), (3, 100), (4, 5)] 

आप सूची को sorted करके और सॉर्ट कुंजी (प्रत्येक ट्यूपल का दूसरा तत्व) निकालने के लिए फ़ंक्शन को सॉर्ट करने के लिए सॉर्ट करते हैं। अंत में, प्रत्येक सॉर्ट किए गए तत्व का मूल अनुक्रमणिका [i[0] for i in ...] का उपयोग करके निकाला जाता है। [i[0] for i in ...] सूची समझ में।

यदि आप numpy का उपयोग कर रहे हैं, तो आपके पास आर्गसोर्ट () फ़ंक्शन उपलब्ध है:

 >>> import numpy >>> numpy.argsort(myList) array([0, 1, 2, 4, 3]) 

http://docs.scipy.org/doc/numpy/reference/generated/numpy.argsort.html

यह तर्क देता है जो सरणी या सूची को वर्गीकृत करेगा।

 In [15]: myList = [1, 2, 3, 100, 5] In [16]: sorted(range(len(myList)),key=lambda x:myList[x]) Out[16]: [0, 1, 2, 4, 3] 

इसके अलावा:

  sorted(range(len(myList)),key=myList.__getitem__) 

enumerate साथ उत्तर अच्छा है, लेकिन मैं व्यक्तिगत रूप से मूल्य की तरह सॉर्ट करने के लिए लैम्ब्डा को पसंद नहीं करता। निम्नलिखित सूचकांक और मूल्य को केवल उलट कर देता है, और वह प्रकार जो तो यह पहले मान द्वारा क्रमबद्ध होगा, फिर इंडेक्स द्वारा।

 sorted((e,i) for i,e in enumerate(myList)) 

enumerate और itemgetter साथ अद्यतन उत्तर:

 sorted(enumerate(a), key=lambda x: x[1]) # [(0, 1), (1, 2), (2, 3), (4, 5), (3, 100)] 

सूचियों को एक साथ पिन करें: ट्यूपल में पहला तत्व सूचकांक होगा, दूसरा मूल्य होगा (फिर इसे टपल x[1] के दूसरे मान का उपयोग करके सॉर्ट करें, एक्स ट्यूपल है)

या operator मॉड्यूल से itemgetter का उपयोग करें:

 from operator import itemgetter sorted(enumerate(a), key=itemgetter(1))