How to find the maximum number (s) in a list with linked numbers

So to speak, I have a list like:

my_list = [12, 13, 51, 21, 22, 58, 45.1, 34.2, 56, 6, 58, 58] 

So the maximum number in this is obviously 58, but I don't just want to return one 58, I want a list of all indexes with that maximum number.

Basically for this I want to get the result [5, 10, 11]

I know that if I want the maximum number I can do my_list.index(max(my_list)), but that just gives me the first index.

Any tips? In addition, I want to stick to simple methods, such as sort, max, len, etc.

+6
source share
4 answers

maxval max:

maxval = max(my_list)

, enumerate :

indices = [index for index, val in enumerate(my_list) if val == maxval]

maxval == 58
indices = [5, 10, 11]

Keyser ( , maxval, , index es), :

maxval = None
for index, val in enumerate(my_list):
    if maxval is None or val > maxval:
        indices = [index]
        maxval = val
    elif val == maxval:
        indices.append(index)
+13

my_list = [12, 13, 51, 21, 22, 58, 45.1, 34.2, 56, 6, 58, 58] 
max_indices = [i for i in range(len(my_list)) if my_list[i] == max(my_list)]

: . max() , ...

max_value = max(my_list)
max_indices = [i for i in range(len(my_list)) if my_list[i] == max_value]
0

, :

maxval = max(my_list)
indices = list(filter(lambda x: my_list[x]==maxval, list(range(len(my_list)))))
0

Enumerate

maxx = max(my_list)
for i,j in enumerate(my_list):
    if j == maxx:
        print i,j

5 58

10 58

11 58

-1
source

Source: https://habr.com/ru/post/1527566/


All Articles