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() ...)。如何获得该值的索引(位置)?请尽量保持简单,不使用新的Python关键字或内置函数。谢谢!
答案 0 :(得分:22)
在我的代码中我会用这个:
>>> max(enumerate(a),key=lambda x: x[1])[0]
3
答案 1 :(得分:19)
一个简单的单线:
max( (v, i) for i, v in enumerate(a) )[1]
这样可以避免在.index()
列表后显示。
答案 2 :(得分:8)
更新
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()
会在列表中找到匹配的 first 项的索引,因此如果您有几个相同的“max”值,则返回的索引将是第一个。
了解更多信息:
本着“简单比复杂更好”的精神。 (Python的禅宗)
答案 3 :(得分:7)
如果不允许使用内置的index()函数,只需使用索引进行迭代,而不是使用foreach循环。
for i in range(len(a)):
if a[i] > max:
max = a[i]
maxIndex = i
答案 4 :(得分:3)
使用numpy.array对象的argmax方法。
import numpy as np
np.array(a).argmax()
答案 5 :(得分:1)
您可以使用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)
答案 6 :(得分:0)
使用index(x)函数。请参阅此处的文档http://docs.python.org/tutorial/datastructures.html
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
max_index = a.index(max)
print max
然而,这并不像其他建议的答案那么快(例如使用枚举)。很简单。
答案 7 :(得分:0)
这样更简单
x.index(max(x)) #where x is your list
答案 8 :(得分:-2)
如果你喜欢强大的代码,你会喜欢这个:) 如果你只有整数,你可以用float替换float。
maximum = max(map(float,[2,1,5,234,3,44,7,6,4,5,9,11,12,14,13]))
如果您在文本文件中输入了输入,请执行以下操作:
file.txt的2 1 5 234 3 44 7 6 4 5 9 11 12 14 13
maximum = max(map(float,(open('file.txt','r')。readline())。split()))