Dunkan Aidaho Posted October 15, 2008 Posted October 15, 2008 Дошли наконец руки и начал в инициативном порядке ликвидировать сабжевую безграмотность. Ознакомился с синтаксисами более-менее популярных языков, понравился 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.
Dunkan Aidaho Posted October 15, 2008 Author Posted October 15, 2008 Выпил чайку, в голове прояснилось: #Список с разными степенями вложенности 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.
Recommended Posts