दिलचस्प पोस्ट
Spritekit में एक ऊर्ध्वाधर स्क्रॉलिंग मेनू कैसे बनाएं? एंड्रॉइड: पिछले गतिविधि पर वापस जाने की रोकथाम C ++ में ग्राफ समस्याओं के लिए बेहतर, आसन्न सूची या आसन्नता का क्या मैट्रिक्स है? Openmp को सक्षम करने में त्रुटि – "ld: -lgomp के लिए लाइब्रेरी नहीं मिली" और क्लैग त्रुटियाँ सभी फ़्रीडीक टेम्प्लेट एल्ग्स पर फंक्शन कैसे कॉल करें? मूल्य बनाम वस्तु वस्तुएं (डोमेन प्रेरित डिजाइन) PHP में लक्षण – कोई वास्तविक दुनिया उदाहरण / सर्वोत्तम अभ्यास? presentViewController: एनिमेटेड: जब तक उपयोगकर्ता फिर से नल नहीं करता तब तक YES दृश्य दिखाई नहीं देगा एक UIImage के अस्पष्टता / अल्फा सेट करने के लिए कैसे? टेम्पलेट सीमा C ++ मैं जावास्क्रिप्ट के साथ सीकेएडिट में एक मान कैसे सेट करूं? एंड्रॉइड वॉली इमेजलोडर – बिटमैप लुक कैश पैरामीटर? nginx: सभी अनुरोध एक HTML पृष्ठ पर भेजें अमेज़ॅन क्लाउड सर्वर पर FTP सेट करना क्वेरी पर एंड्रॉइड जीपीएस गलत स्थान डेटा

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

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

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

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

Solutions Collecting From Web of "पायथन में एक क्रमबद्ध सरणी के सूचकांक कैसे प्राप्त करें"

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

 >>> 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))