#python #python-3.x #recursion #reduction
#python #python-3.x #рекурсия #сокращение
Вопрос:
Я хочу напечатать этот список по вертикали рекурсивно: Пример:
print_list(['hi', [22,45], 'dog', 21])
Ожидаемый:
hi
[22, 45]
dog
21
Вот мой код:
def print_list(n_list):
if len(n_list) == 0:
return
else:
half = len(n_list) // 2
for i in range(half):
if half == 2:
print (n_list[i], sep = "n")
else:
print (n_list[half i])
Вот что я получаю:
hi
[22, 45]
dog
Я не уверен, почему список не печатается полностью. Это также происходит для списков с большим количеством элементов, отображается только часть. Я знаю, что что-то путаю в инструкции print, но не могу понять это…
Комментарии:
1. Это вопрос домашнего задания, не так ли?
2. Naansense HW, да.
Ответ №1:
n_list = ['hi', [22,45], 'dog', 21]
print(*n_list, sep='n')
дает
hi
[22, 45]
dog
21
Ответ №2:
Вы близки, но не применяете сокращение, поскольку ваша функция не вызывает саму себя. Это слегка измененная версия вашего кода, которая должна работать:
def print_list(n_list):
if len(n_list) == 0:
return
else:
half = (len(n_list) 1) // 2
# Print elements in the first half:
for i in range(half):
print(n_list[i])
# Print second half using recursion:
print_list(n_list[half:])
Комментарии:
1. это то, что я искал! Большое вам спасибо!
Ответ №3:
Разве эта функция не дает желаемый результат?
def print_list(n_list):
for item in n_list:
print(item)
Я не уверен, почему именно вы пытаетесь перебрать только половину списка half = len(n_list) // 2
?
Комментарии:
1. и вам не нужно
str
.2. это так… Однако я должен решить это с помощью метода сокращения, в этом суть.
3. @CasperNe похоже, ваш вопрос не совсем ясен. Отсутствуют элементы, потому что вы делите диапазон на два. Что вы подразумеваете под методом сокращения? В вашем вопросе это нигде не указано.
4. @CasperNe Для сокращения вам понадобится рекурсивная функция. У вас нет рекурсии нигде в вашем коде.
5. @CasperNe так отредактируйте свой пост, чтобы на самом деле объяснить свой вопрос и ограничения.