为什么这个列表在递归发生时变成 NoneType?
Why is this list becoming NoneType when a recursion happens?
所以我正在尝试编写此代码来查找列表中是否存在数字的子集,这些数字的子集汇总为也传入的结果。每当我 运行 我的代码但是由于某种原因我的当前列表变量变为 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=currentlist.append(s[i])
这设置了 newlist = None
,因为 append()
没有 return 值。如果您想要一个附加了额外值的新列表,请使用:
newlist = currentlist + [s[i]]
请注意,每次递归调用都创建一个新列表效率很低。修改算法以就地操作单个列表是值得的。
所以我正在尝试编写此代码来查找列表中是否存在数字的子集,这些数字的子集汇总为也传入的结果。每当我 运行 我的代码但是由于某种原因我的当前列表变量变为 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=currentlist.append(s[i])
这设置了 newlist = None
,因为 append()
没有 return 值。如果您想要一个附加了额外值的新列表,请使用:
newlist = currentlist + [s[i]]
请注意,每次递归调用都创建一个新列表效率很低。修改算法以就地操作单个列表是值得的。