JS *_*rtu 4 python random max python-2.7
我的程序计算3个不同值出现的次数,并将它们存储在像这样的列表中 classes = [class1,class2,class3]
我想返回最大值的索引,但这些值通常会重复.如果是这种情况,我想返回在最大值之间随机选择的索引.
例如,如果我有classes = [5,2,5],我想输出0或2.如果我有classes = [1,1,1],0,1和2都没问题.最后,如果我有classes = [1,10,1],我想输出1.
到目前为止,我已将其与其他问题拼凑在一起,但这并不是我想要的方式,我不明白为什么.
classes = [class1,class2,class3]
dupes = [n for n, x in enumerate(classes) if x in classes[:n]]
class_prediction = dupes[random.randint(0,len(dupes))] + 1
Run Code Online (Sandbox Code Playgroud)
(最后的+1是返回实际的类标签而不是索引.)
您可以使用random.choice列表推导,如下所示
indices = [idx for idx, val in enumerate(values) if val == largest]
random.choice(indices)
Run Code Online (Sandbox Code Playgroud)
举个例子,这是调用它几次的结果
>>> import random
>>> values = [5, 2, 5, 3, 1]
>>> largest = max(values)
>>> indices = [idx for idx, val in enumerate(values) if val == largest]
>>> random.choice(indices)
2
>>> random.choice(indices)
0
>>> random.choice(indices)
2
Run Code Online (Sandbox Code Playgroud)