我试图递归地从一个集合中获取所有的子集,下面是我到目前为止的代码:
aset = [1,2,10,4,5,99]
def subSets(aset):
if len(aset) == 0:
return []
prevSets = subSets(aset[:len(aset)-1])
newSets =[]
print prevSets
for s in prevSets:
newSets.append(s.append(aset[-1]))
return prevSets.extend(newSets)
print subSets(aset)
通过这个python实现,我得到了以下错误,我似乎无法理解为什么:
^{pr2}$似乎None
已经变成了{
编辑-正确的解决方案:
多亏了Martijn Pieters,我才弄清楚到底是什么地方出了问题,最终我试图实现以下目标:
def subSets(aset):
if len(aset) == 0:
return [[]]
prevSets = subSets(aset[:-1])
newSets =[]
for s in prevSets:
another = s + [aset[-1]]
newSets.append(another)
return prevSets + newSets
print subSets(aset)
此处,
prevSets
设置为None
:因为下面的行生成
^{pr2}$None
:list.extend()
就地修改列表并返回None
。分开通话并返回:或者改为使用串联:
请注意,您在其他地方也犯了类似的错误:
list.append()
也返回None
,所以实质上是在newSets
中添加{aset[-1]
添加到s
之后将s
添加到{相关问题 更多 >
编程相关推荐