Помните, что вы используете «i» как для приращения внутри цикла, так и для элемента b.В основном «for i in b» помещает первое значение «b» в «i», которое равно «24223», но этот ключ неверен, поскольку, конечно, ваш столбец не содержит 24223 элемента.
В основном изменитеимя одного из ваших индексов.Например:
k = 1
for i in b:
if i > b[k-1] and i > b[k+1]:
print(b[k])
k += 1
(не уверен здесь, если вы хотите напечатать (b [k]) или напечатать (i), но вы получите точку)
Отредактируйте 1: , вы должны использовать «i» как объект в «b», так как вам не нужно, чтобы он был индексом.Когда вы используете «для я в б», я уже содержимое ячейки.Используйте «b [i]» только тогда, когда i является индексом.Здесь вы можете либо:
for i in range(len(b)) :
if b[i] > ...
, где i - индекс, либо:
for i in b :
if i > ...
, где i - объект.
Редактировать 2:, чтобы избежать доступа к b [k + 1] для последнего индекса (который вызывает ошибку, так как k + 1 не существует), используйте условие if.Также для ясности я бы рекомендовал использовать только один индекс.Обратите внимание, что для достижения этого вам также необходимо условие для первой строки, так как b [-1] будет ссылаться на последнюю строку в python, и я предполагаю, что это не то, с чем вы хотите сравнить первую строку.Вот код, который должен работать:
for i in range(len(b)): #range begins implicitly at 0
if i > 0 and i < len(b)-1: #so you are not on the first nor last row
if b[i] > b[i-1] and b[i] > b[i+1]:
print(b[i])
elif i==0: #first row, to be compared with the following one only
if b[i] > b[i+1]:
print(b[i])
else: #last row, to be compared with the previous one only
if b[i] > b[i-1]:
print(b[i])
Существуют краткие и элегантные способы сделать это, но я думаю, что это самый ясный.