проблема рекурсии с вложенными списками в python - PullRequest
2 голосов
/ 29 октября 2019

У меня есть следующий код:

def flat_list(array):
    d=[]
    for i in array:
        if not isinstance(i, list):
            d.append(i)
        else:
            flat_list(i)
    return d

Когда я звоню flat_list([1, [2, 2, 2], 4]), я ожидаю, что он вернет распакованный список ([1, 2, 2, 2, 4]). Вместо этого он возвращает ([1, 4]). Хотя, если я попробую (print i) вместо (d.append(i)), он вернется без упаковки, то есть.

Я прочитал статью о рекурсии, он говорит, что return должен быть после базового условия.

Как мне использовать kindda (return d.append(i))?

1 Ответ

2 голосов
/ 29 октября 2019

вы вызываете свою функцию, но ничего не делаете с ее возвращаемым значением при рекурсивном вызове

    else:
        d.extend(flat_list(i))

extend возьмет все элементы из списка, которые возвращает flat_list, и добавитих к вашему списку, который вы создаете в функции

Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...