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)

基本的に、再帰的な方法を使用して、 2 つの既に並べ替えられたリスト (ASC)を 1つの並べ替えられたリスト (ASC)にマージしたいと考えています。私は自分の論理が正しいことを確信していますが、なぜ私が得ているのか分かりませんTypeError: 'NoneType' object is not iterable

を取得するのはなぜTypeErrorですか?

4

2 に答える 2

11

return minElm.extend( merge(s1[:], s2[:] ))特にlist.extendメソッドが None を返すため、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 に答える