2013-02-26 117 views
5

मैं एक सूची के लिए एक न्यूनतम तत्व है उस तरहअजगर - एक सूची से सभी मिनट तत्वों और उसके सूचकांकों हो रही

a = [1,2,1,1,4,5,6] 

कई बार उपलब्ध है कि है और मैं अजगर तत्व 1 और सभी वापस करना चाहते सूची में सूचकांक जहां 1 मौजूद है। मैंने

min_index, min_value = min(enumerate(a), key=operator.itemgetter(1)) 

जो केवल इंडेक्स देता है जहां पहले 1 होता है।

किसी भी मदद की सराहना की जाती है।

उत्तर

9

न्यूनतम तत्व निर्धारित करें, और उसके बाद सूची में अन्य तत्वों के विरुद्ध जांचें।

def locate_min(a): 
    smallest = min(a) 
    return smallest, [index for index, element in enumerate(a) 
         if smallest == element] 

जो एक tuple (min_element, [location, location, ...]) लौटाएगा। अगर मैं आपको सही ढंग से समझता हूं, तो मुझे यही लगता है कि आप चाहते हैं। आपके लिए उदाहरण:

>>> locate_min([1, 2, 1, 1, 4, 5, 6]) 
(1, [0, 2, 3]) 

यह उदाहरण सूची समझ का उपयोग करता है। यदि आप इससे परिचित नहीं हैं, तो यह लगभग निम्न-लूप संस्करण के बराबर है। (प्रथम संस्करण का उपयोग, इस यह कैसे काम करता की अपनी समझ को मदद करने के लिए बस है)

def locate_min(a): 
    min_indicies = [] 
    smallest = min(a) 
    for index, element in enumerate(a): 
      if smallest == element: # check if this element is the minimum_value 
        min_indicies.append(index) # add the index to the list if it is 

    return smallest, min_indicies 
8

मैं इसे इस तरह बस करो चाहते हैं:

minimum = min(a) 
indices = [i for i, v in enumerate(a) if v == minimum]