簡體   English   中英

如何在帶有綁定數字的列表中找到最大數字

[英]How to find the max number(s) in a list with tied numbers

所以說我有一個列表:

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

所以這里的最大數字顯然是 58,但我不只是想返回一個58,我想要一個包含該最大數字的所有索引的列表。

基本上為此我想要結果[5, 10, 11]

我知道如果我想要最大數量,我可以做my_list.index(max(my_list))但這只會給我第一個索引。

有小費嗎? 另外,我想堅持使用簡單的方法,例如sortmaxlen等...

您可以使用max確定maxval

maxval = max(my_list)

然后使用enumeratelist comprehension獲取索引:

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)

類似於 enumerate 和 list comprehension,你也可以使用 filter:

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

我試圖以最 Pythonic 的方式進行

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

編輯:Ashwini 是對的。 max() 需要在列表之外,所以...

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

Enumerate 將幫助您獲取值和位置

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

輸出

5 58

10 58

11 58

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM