Вам необходимо создать вложенные списки перед вложенным l oop, так же, как вы создаете внешний список перед внешним l oop:
num = [2,10]
def calculo(lista):
lista2 = []
for i in lista:
lista3 = []
for j in range(1, i + 1):
if i % j == 0:
lista3.append(j)
if lista3:
lista2.append(lista3)
return lista2
print(calculo(num))
В любое время, когда у вас достаточно простой l oop, который добавляет элементы в список, вы можете превратить его в понимание списка. Например, внутренняя l oop становится:
lista3 = [j for j in range(1, i + 1) if i % j == 0]
Теперь вы можете написать всю функцию как:
def calculo(lista):
return [[j for j in range(1, i + 1) if i % j == 0] for i in lista]