Как вернуть из функции список? (Ошибка склеивания списков)
import random
def hoare_sorting(s):
if len(s) > 1:
rand_number = random.choice(s)
less = [elem for elem in s if elem < rand_number]
equal = [elem for elem in s if elem == rand_number]
greather = [elem for elem in s if elem > rand_number]
return hoare_sorting(less) + equal + hoare_sorting(greather)
s = [1, 2, 1, 7, 3, 2]
new_list = hoare_sorting(s)
Ошибка: Возникло исключение: TypeError unsupported operand type(s) for +: 'NoneType' and 'list'
Ответы (1 шт):
Автор решения: Danis
→ Ссылка
если длина списка 0 или 1 то условие в if не сработает поэтому надо добавить else где мы будем возвращать список без изменений
import random
def hoare_sorting(s):
if len(s) > 1:
rand_number = random.choice(s)
less = [elem for elem in s if elem < rand_number]
equal = [elem for elem in s if elem == rand_number]
greather = [elem for elem in s if elem > rand_number]
return hoare_sorting(less) + equal + hoare_sorting(greather)
else:
return s