为什么我的代码生成TypeError:“NoneType”对象不是iterab

2024-10-03 13:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 列表lenreturnif排序mergemergedpop
2条回答

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

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

或者

^{pr2}$

这里返回None(因为.extend已就位):

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

相关问题 更多 >