Почему я получаю ошибку списка в списке Python (рекурсия)? - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь создать пользовательские перестановки в списке (в основном, чтобы возиться с рекурсией в python). Прямо сейчас я получаю эту ошибку, когда я запускаю свой код:

TypeError: 'NoneType' object is not iterable

Прежде чем я добавил в список копирование, я получил это:

AttributeError: 'NoneType' object has no attribute 'append'

def findPermutations (size, max, curr_perm):
    if not curr_perm or len(curr_perm) < size:
        for i in range(1,max):
            new_arr = list(curr_perm)
            findPermutations(size, max, new_arr.append(i))
    else:
        return curr_perm


print(findPermutations(2,3,[]))

Я надеялся вернуть кучу или перестановки. Что я здесь не так делаю?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Вам необходимо добавить список элементов перед вызовом рекурсивной функции. Ниже приведен рабочий код. Пожалуйста, дайте мне знать, если у вас есть какие-либо вопросы, я был бы очень рад помочь вам.

def findPermutations (size, max, curr_perm):
    if not curr_perm or len(curr_perm) < size:
        for i in range(1,max):
            new_arr = list(curr_perm)
            new_arr.append(i)
            print(new_arr)
            findPermutations(size, max, new_arr)
    else:
        return curr_perm
findPermutations(2,3,[])
**Result:**
[1]
[1, 1]
[1, 2]
[2]
[2, 1]
[2, 2]
0 голосов
/ 01 апреля 2019

Чтобы решить ваш код:

    new_arr.append(i)
    findPermutations(size, max, new_arr)
...