दिलचस्प पोस्ट
पाठ फ़ाइल को पढ़ने के लिए BufferedReader का उपयोग करना कैसे एक git उपनिर्देशिका निकालने और इसे बाहर एक submodule बना? उखाड़ने का इतिहास निकालें गिट और पीबीएक्सप्रोजे आर में स्ट्रिंग में अंतिम शब्द निकालें जावास्क्रिप्ट MySQL के साथ कनेक्ट कर सकते हैं? मैं वर्तमान जीपीएस स्थान को एंड्रॉइड में प्रोग्राम कैसे प्राप्त करूं? दिए गए फ़ोल्डर में किसी विशिष्ट एक्सटेंशन के साथ फाइलों की सूची कैसे प्राप्त करें? मानचित्रण करते समय मूल्य परिवर्तित करें क्या मैं प्रतिबिंब के साथ एक संपत्ति मूल्य निर्धारित कर सकता हूँ? क्या नियमित अभिव्यक्तियों को नेस्टेड पैटर्न से मिलान करने के लिए इस्तेमाल किया जा सकता है? सेल चयनित होने पर UITableViewCell उपदृश्य गायब हो जाता है लिनक्स के लिए सी ++ आईडीई? एंड्रॉइड एसक्यूएलईइट या एसडीकार्ड या मेमोरी में छवियों को सहेजें जावास्क्रिप्ट और बैकस्लैश बदलते हैं

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

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

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