Jump to content

Программирование


Recommended Posts

Posted

Дошли наконец руки и начал в инициативном порядке ликвидировать сабжевую безграмотность.

Ознакомился с синтаксисами более-менее популярных языков, понравился Python. Но речь не о том.

 

Прочитал сейчас, что собой представляет собой рекурсия и выполняя простую задачку по выводу на стандартный вывод элементов списка, решил немного её усложнить, заставив обнаруживать вложенные списки и выводить и их. С помощью рекурсии.

#Список с разными степенями вложенности
list = [1, u"Maple", 476, u"Элемент", [2, 34, 15, u"WTF? 42?"], u"Half-Life", [1, 2, 3, [u"Яой", u"Хентай"]]]


def ListPrint(list):
   """
   Функция вывода на печать элементов списка и всех
   элементов его подсписков любого уровня вложенности
   """
   n = 0
   while n < len(list):                #Повторять, пока не достигнут конец списка
       if type(list[n]) == type(list): #Если итерируемый элемент списка сам является списком,
           return ListPrint(list[n])   #рекурсивно вызвать функцию для этого элемента
       print list[n]
       n += 1


ListPrint(list)

Вывод:

>>> 
1
Maple
476
Элемент
2
34
15
WTF? 42?

Т.е. первый вложенный список обработался и функция на этом закончила:(

Я так понимаю, что допустил где-то логическую ошибку, но видимо на сонную голову, никак не пойму, где?

Open your eyes, open yor mind... ©Guano Apes

Sorry for my bad english.

Posted

Выпил чайку, в голове прояснилось:

#Список с разными степенями вложенности
list = [1, u"Maple", 476, u"Элемент", [2, 34, 15, u"WTF? 42?"], u"Half-Life", [1, 2, 3, [u"Яой", u"Хентай"]]]


def ListPrint(list):
   """
   Функция вывода на печать элементов списка и всех
   элементов его подсписков любого уровня вложенности
   """
   n = 0
   while n < len(list):                #Повторять, пока не достигнут конец списка
       if type(list[n]) == type(list): #Если итерируемый элемент списка сам является списком,
           ListPrint(list[n])   #рекурсивно вызвать функцию для этого элемента
       else:
           print list[n]
       n += 1
   return


ListPrint(list)

Вывод:

>>> 
1
Maple
476
Элемент
2
34
15
WTF? 42?
Half-Life
1
2
3
Яой
Хентай

Пойду-ка я посплю..:)

Open your eyes, open yor mind... ©Guano Apes

Sorry for my bad english.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...