@YraganTron

Как найти позицию максимального элемента в списке?

def max2(z):
	for x in range(len(z)):
		s = 0
		b = 0
		if z[x] > s:
			s = z[x]
			b = x
	print b

Не могу найти ошибку. Возможно неправильна сама идея, но других идей по реализации нет.
  • Вопрос задан
  • 13022 просмотра
Решения вопроса 2
@AlexP11223
Вы на каждой итерации цикла s и b обнуляете.

И имена стоит более понятные давать.
Ответ написан
Комментировать
@Rafalskyi
def max2(z):
    s = 0
    b = 0
    for x in range(len(z)):
        if z[x] > s:
            s = z[x]
            b = x
    print b

так
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
SolidlSnake
@SolidlSnake
Ваш дружелюбный сосед
Так же обратите внимание на то, что вы используете for в стиле языков вроде C, вы через цикл получаете лишь индекс, хотя тут можно обойтись более простым:
for x in z:
    if x > s:
        #...


upd. Ошибочка, вам нужно найти индекс, тогда можно воспользоваться функцией enumerate:
for i, x in enumerate(z):
    if x > s:
        #...

Теперь при каждом шаге в значении i будет индекс, а в x - само значение.
Ответ написан
Лучше использовать enumerate:

for i, v in enumerate(z):
    if v > max_v:
        max_v = v
        max_i = i

Вариант без цикла:

max_i = z.index(max(z))
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Ошибка в алгоритме - s и b должны инициализироваться до начала цикла.
Ошибка в логике - максимальный элемент может быть и меньше 0. Лучше будет s = -maxint-1 если речь о целых числах
Ответ написан
weend
@weend
def maximal(in_list):
    n = 0
    for i in in_list:
        if i > n: n = i
    print in_list.index(n)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы