Найти - Пользователи
Полная версия: Помогите с рекурсивным поиском
Начало » Python для новичков » Помогите с рекурсивным поиском
1
vkopey
# -*- coding: UTF-8 -*-
def findItem(value,item):
'''Ищет значение value в иерархическом списке item'''
if item==value:
print item
elif item.__class__.__name__=='list':
for child in item:
findItem(value, child)

s=[1,[21,22],3,[41,42],[51,52],6,7]
findItem(52,s)
Как сделать так чтоб функция findItem не печатала результат, а возвращала его через return ?

Ладно, пусть она возвращает логическое значение, но как это сделать?
Piton23
Ниче не понял. Что значит возвращала результат? Ты проверяешь есть ли в данном списке элемент иль нет, и в идеале возвращать надо bool. Если ж тебе надо точный индекс элемента то это уже другой разговор (для данного примера что то типа ).
s0rg
А заменить print на return не пробовали?
vkopey
s0rg
А заменить print на return не пробовали?
Видает None, к сожалению.
s0rg
Упс - не заметил что функция рекурсивная )
А что именно она должна вернуть?
Опишите задачу - так как если она должна вернуть то, что нашла, то мы ей это же самое передаем в первом аргументе )
vkopey
s0rg
Упс - не заметил что функция рекурсивная )
А что именно она должна вернуть?
Опишите задачу - так как если она должна вернуть то, что нашла, то мы ей это же самое передаем в первом аргументе )
Пусть пока возвращает то, что передаем в первом аргументе. Потом я переделаю как надо. Но проблема в том, что возвращает None, если заменить print на return. Как заставить ее возвращать то, что нашла?
Piton23
Если уж автор не хочет уточнять задание то ладно, как то так

def parse(value, item):
if item == value:
return item
elif item.__class__.__name__ == ‘list’:
for child in item:
item = parse(value, child)
if item:
return item

А возвращал у тебя None потому что функция по умолчанию выталкивает None если явно не указывать. В твоем случае когда заменял print->return
он возвращал в этой строке “findItem(value, child)” и терялось при дальнейших итерациях (Поэтому до самого верхнего уровня не доживает это)
vkopey
Piton23, s0rg, спасибо! )))
А то я уже начал подумывать о применении глобальных переменных…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB