2つのソートされたリストを結合されたソートされたリストにマージするはずの関数があります。私はこれを達成する他の方法がある知っているが、このコードはwhile
ループは一度だけ実行するように思われるいくつかの理由について2つのリストをループすると1回だけ繰り返されます
def merge_two(list1,list2):
new=[]
l1=list1[:]
l2=list2[:]
while l1 and l2:
if l1[0]<l2[0]:
new.append(l1.pop(0))
else:
new.append(l2.pop(0))
print(new,l1,l2)
return new+l1+l2
動作しない理由を誰かが説明することができます。例えば、私はlist=['a','x','z']
とlist2=['b','c','f','g']
を使用している場合、これをデバッグから['a']['x','z']['b','c','f','g']
における関数の結果の最後に印刷ラインは一度だけ実行するwhileループが原因のようですが、それが起こって、なぜ私はわかりません。 .. l1
またはl2
のいずれかが空になるまでお待ちください。
... 'return'は' while'が2回目の実行の前に関数を残すためですか? –