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

问题描述 投票:0回答:2

我试图在列表中创建自定义排列(主要是在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,[]))

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

python recursion permutation
2个回答
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]

0
投票

解决你的代码:

    new_arr.append(i)
    findPermutations(size, max, new_arr)
© www.soinside.com 2019 - 2024. All rights reserved.