Когда я пытаюсь запустить эту функцию, я получаю ошибку индекса: список вне диапазона.Ошибка возникает в блоке кода исключения, когда я пытаюсь использовать list.remove(list[i])
.Не уверен, почему я получаю ошибку выхода за пределы диапазона, и любая помощь будет принята с благодарностью!
Я уже пробовал отлаживать различные операторы печати вокруг своей функции, и я увидел, что моя запись в порядке,он просто выдает эту ошибку всякий раз, когда я пытаюсь удалить запись в моем блоке кроме.
def subnet_insertion_sort(list):
with open('bad_subnets.csv', 'w') as z:
# Traverse through 1 to len(list)
for i in range(1, len(list)):
# extracts subnet from current list observed in list
# and casts it as a ip_network objects
try:
key_subnet = ipaddress.ip_network(unicode(list[i][0]))
j = i - 1
# Move elements of list[0..i-1], that are
# greater than key, to one position ahead
# of their current position
while (j >= 0 and key_subnet < ipaddress.ip_network(unicode(list[j][0]))):
temp = list[j]
list[j] = list[j + 1]
list[j + 1] = temp
j -= 1
except:
print("invalid subnet found: " + list[i][0] + " on line " + str(i) + ". It has been added to bad_subnets.csv")
writer_z = csv.writer(z)
writer_z.writerow(list[i])
list.remove(list[i])
continue
return list
Мой ожидаемый результат будет состоять в том, что функция работает правильно, и я получил список без недействительных подсетей, но мой фактический вывод - ошибка индекса: список вне диапазона.