8

私は次のように複数回存在する最小要素を持つリストを持っています

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

そして、Pythonが存在1するリスト内の要素とすべてのインデックスを返すようにし1ます。使ってみました

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

1これは、最初に発生するインデックスのみを提供します。

4

2 に答える 2

19

私は次のようにします:

minimum = min(a)
indices = [i for i, v in enumerate(a) if v == minimum]
于 2013-02-26T20:32:38.810 に答える
13

最小要素を決定し、リスト内の他の要素と照合します。

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

タプル (min_element, [location, location, ...]) を返します。私があなたのことを正しく理解していれば、これがあなたが望んでいることだと思います。あなたの例:

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

この例では、リスト内包表記を使用しています。これに慣れていない場合は、次の for ループ バージョンとほぼ同じです。(最初のバージョンを使用してください。これは、それがどのように機能するかを理解するのに役立ちます)

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
于 2013-02-26T20:31:58.853 に答える