Если вы не хотите использовать append (). Тогда вы можете использовать это решение:
def double(lst, lst_ = []):
if not lst:
return lst_
else:
return [lst[0] * 2 , *double(lst[1:])]
print(double([1,2,3,4,5,6,7,8]))
Вывод будет: [2, 4, 6, 8, 10, 12, 14, 16]
На всякий случай, если вам интересно с вызовом * double (lst [1:]): * [] используется для распаковки списка аргументов. Подробнее здесь.
Если вы позвоните без *, вы получите вывод:
[2, [4, [6, [8, [10, [12, [14, [16, []]]]]]]]]
Еще одним простым решением будет:
def double(lst, lst_ = []):
if not lst:
return lst_
else:
lst[0] = lst[0] * 2
lst_ = lst_.append(lst[0])
return double(lst[1:])
print(double([1,2,3,4,5,6,7,8]))