我正在尝试在列表中创建自定义排列(主要是为了解决python中的递归问题)。现在,当我运行代码时出现此错误:
git log
在添加列表副本之前,我已经得到了:
git log
TypeError: 'NoneType' object is not iterable
我希望返回一堆或排列。我在这里做什么错了?
答案 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]
是更好的选择。这将创建一个新列表,并将其传递到下一个递归函数调用。