2013-04-09 6 views
1

Поэтому мне нужно написать и протестировать функцию, которая возвращает индекс самого большого элемента в списке (или, если несколько элементов имеют наибольшее значение, индекс первого из них) и Мне не разрешено использовать функцию max. Помощь очень ценится!max списка в python

def largestElementIndex(lst): 
    x=0 
    maxNum=0 
    while x+1 < len(lst): 
     if lst[x] > maxNum: 
      maxNum=x 
     x+=1 
    return maxNum 

print "Program Output" 
indexOfMax = largestElementIndex([1, 4, 3, 3, 2]) 
print 'Index Of Max Value is',indexOfMax 
+3

Этот код не работает? – Blender

ответ

5

Вам нужно хранить большое количество, а также индекс:

def largestElementIndex(lst): 
    x=0 
    maxNum=0 
    maxIndex=0 

    while x < len(lst): 
     if lst[x] > maxNum: 
      maxIndex=x 
      maxNum=lst[x] 
     x+=1 
    return maxIndex 

Я бы также использовать for цикл:

def largestElementIndex(lst): 
    max_index = 0 
    max_value = lst[0] 

    for index, value in enumerate(lst) 
     if value > max_value: 
      max_index = index 
      max_value = value 

    return max_index 

Чтобы сделать это с max, вам использовать enumerate таким же образом:

max_index = max(enumerate(lst), key=lambda pair: pair[1])[0] 
+1

Первая версия должна иметь 'while x Jared

+1

@ Jared: Спасибо. – Blender

1

Вы также можете использовать этот простой подход, если вы не хотите использовать максимальную функцию:

res = lst.index(sorted(lst)[-1]) 

ура!

Смежные вопросы