Найти - Пользователи
Полная версия: Функция возвращает бесконечный вложеный список
Начало » Центр помощи » Функция возвращает бесконечный вложеный список
1
Timafei.sosnin
 def clearlist(mass,out=[]):
    for qwe in mass:
        if (type(qwe)==list):
            out.append(clearlist(qwe))
        else:
            if not(qwe in out):
                out.append(qwe)
    return(out)
если передавать без вложенного то всё отлично пример:
 w=[1,2,3,4,1,1,23,12,12,21]
w=clearlist(w)
возвращает:
 [1, 2, 3, 4, 23, 12, 21]
А если есть вложенный то всё становится веселей:
 w=[1,2,3,4,1,1,23,12,12,21,['a','a','s']]
[1, 2, 3, 4, 23, 12, 21, 'a', 's', [...]]
FishHook
Timafei.sosnin
Передавать список дефолтным параметром - плохая идея. Это может работать не так, как вы ожидаете. Дело в том, что объект функции создается один раз, и дефолтное значение устанавливается один раз, а дальше используется указатель на одно и то же значение
Попробуйте запустить
 def foo(l=[]):
    l.append(1)
    print(l)
foo(l=[7])
foo()
foo()
foo()
Timafei.sosnin
FishHook
С твоего ответа не чего честно говоря не понял кроме того что:
FishHook
Передавать список дефолтным параметром - плохая идея

поискал и нашел решение
 def clearlist(mass,out=None):
    if (out==None):
        out=[]
    for qwe in mass:
        if (type(qwe)==list):
            out.append(clearlist(qwe))
        else:
            if not(qwe in out):
                out.append(qwe)
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