Python 如何从列表中获得随机最大值?

Python 如何从列表中获得随机最大值?,python,python-3.x,list,max,Python,Python 3.x,List,Max,我想使用python从列表中随机获取最大值。我的清单是: list=[0,-1,-2,0] -> index(max(list))=0 然而,我想要的是,它随机选择一个包含最大值的索引,例如 list=[0,-1,-2,0] -> index(some_func(list))=0 , index(some_func(list))=3 Python中是否有一个内置函数允许我这样做?您可以先筛选包含最大值的索引,然后使用random.choice随机选择一个 import rando

我想使用python从列表中随机获取最大值。我的清单是:

list=[0,-1,-2,0] -> index(max(list))=0
然而,我想要的是,它随机选择一个包含最大值的索引,例如

list=[0,-1,-2,0] -> index(some_func(list))=0 , index(some_func(list))=3

Python中是否有一个内置函数允许我这样做?

您可以先筛选包含最大值的索引,然后使用
random.choice
随机选择一个

import random

lst=[0,-1,-2,0]
max_ = max(lst)
index = random.choice([i for i in range(len(lst)) if lst[i] == max_])

作为旁注,不要将
列表
用作变量名,因为它会覆盖内置的
列表
您可以先筛选包含最大值的索引,然后使用
随机。选择
随机选取一个

import random

lst=[0,-1,-2,0]
max_ = max(lst)
index = random.choice([i for i in range(len(lst)) if lst[i] == max_])

作为旁注,不要将
列表
用作变量名,因为它会覆盖内置的
列表

首先获取包含最大值的索引:

maxes = [i for i,m in enumerate(list) if m == max(list)]
然后从该列表中选择一个随机索引:

import random
choice = random.choice(maxes)
那你想怎么做就怎么做

print(list[choice])

首先获取包含最大值的索引:

maxes = [i for i,m in enumerate(list) if m == max(list)]
然后从该列表中选择一个随机索引:

import random
choice = random.choice(maxes)
那你想怎么做就怎么做

print(list[choice])

小心,这会在每次迭代时重新计算最大值,这使得算法HMM(n^2)根据列表中的最大值计算索引,将它们存储在列表中,然后从索引列表中随机获取一个值。您能向我解释一下您的评论吗?我是一名土木工程师,因此对计算机科学/编程理论知之甚少,我很好奇,当最大索引列表已经预先确定时,如何在每次迭代中重新计算最大值?如果在每次迭代中重新评估某个条件(m),则过滤条件
。这意味着,如果m==max(list)
在每次迭代时重新计算条件
,尤其是每次重新计算最大值。这是不必要的计算,因为最大值只需计算一次。你可以看看我的答案,看看如何实现这一点。我知道用预先计算的最大值替换最大值(列表)就能解决这个问题?小心,这会在每次迭代时重新计算最大值,这使得算法HMM(n^2)根据列表中的最大值计算索引,并将它们存储在列表中,然后从索引列表中随机抽取一个值,你能给我解释一下你的评论吗?我是一名土木工程师,因此对计算机科学/编程理论知之甚少,我很好奇,当最大索引列表已经预先确定时,如何在每次迭代中重新计算最大值?如果在每次迭代中重新评估某个条件(m)
,则过滤条件
。这意味着,如果m==max(list)
在每次迭代时重新计算条件
,尤其是每次重新计算最大值。这是不必要的计算,因为最大值只需计算一次。你可以看看我的答案,看看如何做到这一点。我明白了,用预先计算的最大值替换最大值(列表)就能解决这个问题吗?我知道,我只是举个例子。谢谢你的回答。我把它标为正确的。我知道,我只是举个例子。谢谢你的回答。我把它标为正确的。