Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当递归发生时,为什么这个列表变为非类型?_Python_Function_Recursion_Nonetype - Fatal编程技术网

Python 当递归发生时,为什么这个列表变为非类型?

Python 当递归发生时,为什么这个列表变为非类型?,python,function,recursion,nonetype,Python,Function,Recursion,Nonetype,所以我试着编写这段代码,查找列表中是否有数字的子集,这些数字的总和就是一个也被传递进来的结果。然而,每当我运行代码时,由于某种原因,我的currentlist变量就变成了NoneType。这是我得到的错误: AttributeError: 'NoneType' object has no attribute 'append' 这是我的代码: def resultinSubset(t,s): currentlist=[] currentsum=0 def recresu

所以我试着编写这段代码,查找列表中是否有数字的子集,这些数字的总和就是一个也被传递进来的结果。然而,每当我运行代码时,由于某种原因,我的currentlist变量就变成了NoneType。这是我得到的错误:

AttributeError: 'NoneType' object has no attribute 'append' 
这是我的代码:

def resultinSubset(t,s):
    currentlist=[]
    currentsum=0
    def recresultinSubset(t,s,i,currentsum,currentlist):
        if currentsum == t:
            return True
        if i == (len(s)):
            return False
        newlist=currentlist.append(s[i])
        newsum=int(currentsum)+int(s[i])
        including=recresultinSubset(t,s,i+1,newsum,newlist)
        notincl=recresultinSubset(t,s,i+1,currentsum,currentlist)
        return including + notincl
    return recresultinSubset(t,s,0,currentsum,currentlist)
    print(currentlist)                                  
print(resultinSubset(6, [1,2,3])) 
这将设置
newlist=None
,因为
append()
没有返回值。如果您想要添加额外值的新列表,请使用:

newlist = currentlist + [s[i]]

请注意,每次递归调用都创建一个新列表是非常低效的。修改算法以适当地操作单个列表是值得的。

请始终尝试提供一个列表。如果收到错误,请发布整个错误消息,包括堆栈跟踪。下一行:
newlist=currentlist.append(s[i])
None
分配给
newlist
,因为
.append
返回
None
。注意,
.append
不会创建新列表。这与递归无关。我刚刚弄明白了,但谢谢你!
newlist = currentlist + [s[i]]