为什么我的代码产生TypeError:'NoneType'对象不可迭代

时间:2013-08-16 21:08:08

标签: python python-3.x

我知道这个错误已被多次询问过,但我仍然坚持使用我的代码来解释为什么它会一直返回TypeError

def merge( s1, s2):
    if len(s1) == 0:
        return s2[:]
    if len(s2) == 0:
        return s1[:]
    minElm = []
    if s1[0] <= s2[0]:
        minElm.append( s1.pop(0) )
    else:
        minElm.append( s2.pop(0) )
    return minElm.extend( merge(s1[:], s2[:] ))

list1 = [1,3,5,7,9]
list2 = [2,4,6,8]

merged = merge( list1[:], list2[:] )
print(merged)

基本上,我想使用递归方法将两个已经排序的列表(ASC)合并到单个排序列表(ASC)中。我很肯定我的逻辑是正确的,我无法理解为什么我得到TypeError: 'NoneType' object is not iterable

为什么我会收到TypeError

2 个答案:

答案 0 :(得分:8)

return minElm.extend( merge(s1[:], s2[:] ))返回None,特别是因为list.extend方法返回None。相反,请执行以下操作之一:

minElm.extend( merge(s1[:], s2[:] ))
return minElm

return minElm + merge(s1[:], s2[:] )

答案 1 :(得分:4)

此处您正在返回None.extend就位):

return minElm.extend( merge(s1[:], s2[:] ))