Как вернуть из функции список? (Ошибка склеивания списков)

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
→ Ссылка