我有一個應該是兩個排序列表合併成組合的排序列表的功能。我知道有實現這一點有其他的方式,但有人可以解釋爲什麼這個代碼不工作同時遍歷兩個列表只迭代一次
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
出於某種原因,while
循環似乎只運行一次。例如,如果我用list=['a','x','z']
和list2=['b','c','f','g']
,打印行的函數結果的末尾['a']['x','z']['b','c','f','g']
從調試這似乎是由於while循環只執行一次,但我不知道爲什麼會發生的事情。 ..它應該一直到l1
或l2
爲空
......因爲'return'離開函數之前'while'有機會第二次運行? –