![](/img/trans.png)
[英]how to find the difference of a number and it's earlier numbers in python list only if the earlier number is less than the current number
[英]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))
但這只會給我第一個索引。
有小費嗎? 另外,我想堅持使用簡單的方法,例如sort
、 max
、 len
等...
您可以使用max
確定maxval
:
maxval = max(my_list)
然后使用enumerate
和list 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.