Sha*_*mar 15 python indexing list max
def main():
a = [2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]
max = 0
for number in a:
if number > max:
max = number
print max
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
我能够获得数组中的最大值(当然不使用max() ...).如何获得该值的索引(位置)?请尽量保持简单,不使用新的Python关键字或内置函数.谢谢!
ovg*_*vin 22
在我的代码中我会使用这个:
>>> max(enumerate(a),key=lambda x: x[1])[0]
3
Run Code Online (Sandbox Code Playgroud)
Jon*_*nts 19
一个简单的一个班轮:
max( (v, i) for i, v in enumerate(a) )[1]
Run Code Online (Sandbox Code Playgroud)
这避免.index()
了之后的列表.
更新:
max_idx = -1
max_val = a[0]
for i in xrange(1, len(a)):
if a[i] > max_val:
max_val = a[i]
max_idx = i
Run Code Online (Sandbox Code Playgroud)
这不会影响内置函数max()
,也会为仅包含负值的列表提供正确的答案.
以前的方案
a.index(max(a))
Run Code Online (Sandbox Code Playgroud)
会做的.
内置函数max(a)
将在列表中找到最大值a
,list函数
index(v)
将v
在列表中找到值的索引.通过组合它们,您可以得到您想要的东西,在这种情况下是索引值3
.
请注意,.index()
将找到列表中匹配的第一个项的索引,因此如果您有几个相同的"max"值,则返回的索引将是第一个的索引.
欲获得更多信息:
本着"简单比复杂更好"的精神.(Python的禅宗)
如果不允许使用内置的index()函数,只需使用索引进行迭代,而不是使用foreach循环.
for i in range(len(a)):
if a[i] > max:
max = a[i]
maxIndex = i
Run Code Online (Sandbox Code Playgroud)
小智 5
使用 numpy.array 对象的 argmax 方法。
import numpy as np
np.array(a).argmax()
Run Code Online (Sandbox Code Playgroud)