为什么我在python列表上遇到列表错误(递归)?

时间:2019-04-01 16:23:37

标签: python recursion permutation

我正在尝试在列表中创建自定义排列(主要是为了解决python中的递归问题)。现在,当我运行代码时出现此错误:

git log

在添加列表副本之前,我已经得到了:

git log

TypeError: 'NoneType' object is not iterable

我希望返回一堆或排列。我在这里做什么错了?

3 个答案:

答案 0 :(得分:0)

要解决您的代码:

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

答案 1 :(得分:0)

您需要在调用递归函数之前附加项目列表。以下是有效的代码,如果您有任何疑问,请告诉我,我将非常乐意为您提供帮助。

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]

答案 2 :(得分:0)

list.append()函数返回None

它不返回新的更新列表。它仅修改现有列表并返回None。因此,None在后​​续递归调用中作为findPermutations()函数中的第三个参数传递。

@Wonka的回答将代码分为两部分。这样就可以先更新new_arr列表,然后将其传递到函数中。

在这里使用new_arr + [i]是更好的选择。这将创建一个新列表,并将其传递到下一个递归函数调用。