Вместо двух отдельных функций вы можете выполнять возведение в квадрат и проверку на положительное значение в одной и той же функции.
Для обработки без зацикливания мы можем использовать рекурсию. Поскольку мы уже используем рекурсию, мы можем обрабатывать списки с помощью одной и той же рекурсивной функции.
test_list = [[1,2,3,-1],2,3,[3,-4,1,3],-1,-3]
def positive_square_list(lst, index):
if index < len(lst):
if type(lst[index]) == list:
positive_square_list(lst[index], 0)
index += 1
if lst[index] < 0:
lst.pop(index)
index -= 1
if index == len(lst):
return lst
else:
return positive_square_list(lst, index+1)
lst[index] = lst[index] ** 2
return positive_square_list(lst, index+1)
return lst
output = positive_square_list(test_list, 0)
Выход переменной будет иметь значения: [[1,4,9],4,9,[9,1,9]]