def minimizeMaximumPair(lst):
lst.sort()
def compute(aList):
if len(aList) != 0:
return [(aList[0], lst[len(aList) - 1])].extend(compute(aList[1:len(aList) - 1]))
return []
return compute(lst)
当我得到最后一个递归步骤时,我得到了一个
TypeError: 'NoneType' object is not iterable
我尝试了什么都没有,还有一个[]
答案 0 :(得分:4)
问题在于您致电.extend()
。
您的compute
函数会尝试返回.extend()
的值,即None
。与.sort()
类似,.extend()
修改对象本身,而不是返回对象的修改副本。这被称为可变性。这是一些有效的代码:
def compute(aList):
if len(aList) != 0:
out = [(aList[0], lst[len(aList) - 1])]
out.extend(compute(aList[1:len(aList) - 1]))
return out
return []
答案 1 :(得分:2)
而不是返回list.extend
的{{1}},您可以使用None
list.__iadd__
也会将列表扩展到位,但之后会返回__iadd__
如果您厌恶使用特殊方法,可以使用list
模块中的iadd
operator
答案 2 :(得分:1)
这是因为extend
是一个不返回任何内容的函数,它只是就地更改列表。可能的解决方案是使用+
代替:
return [(aList[0], lst[len(aList) - 1])] + compute(aList[1:len(aList) - 1])