Ошибка "IndexError: list index out of range" при нулевом индексе
def sort(list):
x = list[0]
less = []
more = []
if len(list) < 2:
return list
else:
sort_list = [x]
for i in list:
if i < x:
less.append(i)
else:
more.append(i)
sort(less)
sort(more)
sort_list.append(more)
sort_list.insert(0, less)
return sort_list
sort([1, 2, 3])
Я попробовал написать свою функцию сортировки основанную на алгоритме быстрой сортировки. Но появляется ошибка:
Traceback (most recent call last):
File "D:\Coding\Projects\1code.py", line 21, in <module>
sort([1, 2, 3])
File "D:\Coding\Projects\1code.py", line 14, in sort
sort(less)
File "D:\Coding\Projects\1code.py", line 2, in sort
x = list[0]
IndexError: list index out of range
Как объект под нулевым индексом может отсутствовать?
Ответы (1 шт):
Автор решения: Дмитрий Игоревич
→ Ссылка
Во-первых не стоит использовать зарезервированные в python слова в качестве имён самописных функций и имён параметров (list, sort).
Во-вторых данная ошибка вполне может возникать когда список пустой. В Вашем случае функция рекурсивная и Вы сначала делаете так - less = [] , а потом ниже делаете так - sort(less).
В цикле:
for i in list:
if i < x:
less.append(i)
else:
more.append(i)
3 раза заходит в ветку с more.append, и список less остаётся пустой. И вы его передаёте в sort(), где пытаетесь обратиться к нулевому элементу, которого нет.