我知道这个错误已被多次询问过,但我仍然坚持使用我的代码来解释为什么它会一直返回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
?
答案 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[:] ))