Уведомления

Группа в Telegram: @pythonsu

#1 Июль 11, 2013 14:33:56

bot
Зарегистрирован: 2013-07-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Рекурсивная функция с произвольной вложенностью

Привет всем!
Есть след задача: есть список с произвольным уровнем вложенности каждое значение, которого уникально. Нужно достать одно из уникальных значений
Для простоты набросал вот такой пример:

m = [[[3, 4], [1, 2]], [[3, 4], [1, 2]], [[3, 4], [1, 2]], [[3, 4], [1, 2]], [[9, 8], [9, 0]]]
def function(f):
	for propertys in f:
		x = propertys
		
		if not isinstance(propertys, list):
			if x == 0:
				print x
				return x
		else:
			function(propertys)
		
for group in m:
	x = function(group)
	print x

return почему то возвращает None, хотя print печатает значение


Поиском пользовался

Отредактировано bot (Июль 11, 2013 14:34:36)

Офлайн

#2 Июль 11, 2013 14:46:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Рекурсивная функция с произвольной вложенностью

Ошибка в том, что выполнив

function(propertys)
функция кончается, то есть возвращает None



Офлайн

#3 Июль 11, 2013 14:50:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Рекурсивная функция с произвольной вложенностью

def flatten(nested):
    try:
        for sublist in nested:
            for element in flatten(sublist):
                yield element
    except TypeError:
        yield nested
l = [1, 2, 3, [1, 2], [45, 67, [56, 4]]]
for x in flatten(l):
    print x



Офлайн

#4 Июль 11, 2013 15:06:17

bot
Зарегистрирован: 2013-07-11
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Рекурсивная функция с произвольной вложенностью

FishHook
Спасибо, но мне все равно придется переделывать. Предстоит работа с файлом в 10Mб
это одна из функций которая несколько тысяч раз будет выполнятся по циклу. Боюсь что система просто повиснет. Но тем не менее большое спасибо сам бы еще долго разбирался.

Офлайн

#5 Июль 12, 2013 09:59:51

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Рекурсивная функция с произвольной вложенностью

Частовстречающаяся ошибка, когда функция рекурсивно так вызывается, нужно
return function(…)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version