Найти - Пользователи
Полная версия: Рекурсивная функция с произвольной вложенностью
Начало » Python для новичков » Рекурсивная функция с произвольной вложенностью
1
bot
Привет всем!
Есть след задача: есть список с произвольным уровнем вложенности каждое значение, которого уникально. Нужно достать одно из уникальных значений
Для простоты набросал вот такой пример:
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 печатает значение


Поиском пользовался
FishHook
Ошибка в том, что выполнив
function(propertys)
функция кончается, то есть возвращает None

FishHook
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
bot
FishHook
Спасибо, но мне все равно придется переделывать. Предстоит работа с файлом в 10Mб
это одна из функций которая несколько тысяч раз будет выполнятся по циклу. Боюсь что система просто повиснет. Но тем не менее большое спасибо сам бы еще долго разбирался.
dimy44
Частовстречающаяся ошибка, когда функция рекурсивно так вызывается, нужно
return function(…)
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