Глубина списка согласно заданному числу
Прошу помощи у уважаемого сообщества. Задача вроде бы простая, но я уже отчаялся сам догадаться.
Дано: целое натуральное число (n = 5, например).
Необходимо: получить список вложенных списков глубины равной заданному числу. (например: [[[[[]]]]])
Пробовал:
n = 3
a = []
ans = []
while n > 0:
ans.append(a)
a = ans
n -= 3
ans.append(a)
но выдает:
[[], [...]]
попробовал схитрить:
n = 6
print(eval(n*'['+n*']'))
но второй способ переполняет память "проверяльщика".
Подскажите, пожалуйста, наведите на путь истинный.
Полсе подсказки попробовал рекурсию, но ответ у меня все равно получился далеко от ожидаемого:
n = 3
a = []
ans = []
def arr(a, ans):
ans.append(a)
return a
while n > 0:
a = arr(a, ans)
n -= 1
print(ans)
ответ: [[], [], []] Кроме того, впервые встретил такого зверя: [...], и даже не смог загуглить что это...
Ответы (2 шт):
Автор решения: user745102
→ Ссылка
lst = [1,2]
n = 3
def make_list(*lst):
return list(lst)
for i in range(n):
lst = make_list(lst)
print(lst)
# [[[[1, 2]]]]
Автор решения: Stanislav Volodarskiy
→ Ссылка
Начните с пустого списка, наденьте на него n - 1 списков. Вот так:
n = int(input())
a = []
for _ in range(1, n): # цикл на n - 1 повторений
a = [a]
print(a)