我能够通过显式循环获取数组中的最大值:
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()
如何获得该值的索引(位置)?
在我的代码中我会使用这个:
>>> max(enumerate(a),key=lambda x: x[1])[0]
3
简单的一行:
max( (v, i) for i, v in enumerate(a) )[1]
这避免了必须
.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
这不会影响内置函数
max()
,并且还会为仅包含负值的列表提供正确的答案。
之前的解决方案
a.index(max(a))
会成功的。
内置函数
max(a)
将找到列表中的最大值a
,以及列表函数
index(v)
将在您的列表中找到值 v
的索引。通过将它们组合起来,您就可以获得所需的内容,在本例中为索引值3
。
请注意,
.index()
将找到列表中匹配的第一个项目的索引,因此,如果您有多个相同的“最大值”值,则返回的索引将是第一个的索引。
欲了解更多信息:本着“简单胜于复杂”的精神。 (Python之禅)
for i in range(len(a)):
if a[i] > max:
max = a[i]
maxIndex = i
import numpy as np
np.array(a).argmax()
enumerate
在迭代列表时也为您提供索引:
>>> a = [2, 1, 5, 234, 3, 44, 7, 6, 4, 5, 9, 11, 12, 14, 13]
>>> maxIndex, maxNumber = 0, 0
>>> for index, number in enumerate(a):
if number > maxNumber:
maxIndex = index
maxNumber = number
>>> maxIndex, maxNumber
(3, 234)
x.index(max(x)) #where x is your list
最大值= max(地图(浮点,[2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]))如果您在文本文件中输入了内容,请执行以下操作:
文件.txt
2 1 5 234 3 44 7 6 4 5 9 11 12 14 13
最大值= max(map(float,(open('file.txt', 'r').readline()).split()))