3

我知道这个错误已经被问过好几次了,但我一直坚持我的代码为什么它一直返回 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

4

2 回答 2

11

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

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

或者

return minElm + merge(s1[:], s2[:] )
于 2013-08-16T21:10:30.307 回答
4

您在这里返回None(原样.extend):

return minElm.extend( merge(s1[:], s2[:] ))
于 2013-08-16T21:10:08.723 回答