2 回答

TA贡献1817条经验 获得超14个赞
您可以比较 of 的第一个元素list1和最后一个元素,list2也可以pop从list2with的末尾开始pop()(不带任何参数)。最后,你可以append在剩下的列表中list2,以result与pop()直至一个也不剩。
因此,稍加修改,您的代码将变为:
def merge2(list1, list2):
results = []
while list1 and list2:
if list1[0] < list2[-1]:
results.append(list1.pop(0))
else:
results.append(list2.pop())
results.extend(list1)
while list2:
results.append(list2.pop())
return results
print(merge2([1,3,11,34], [60,38,7,1,0]))
# [0, 1, 1, 3, 7, 11, 34, 38, 60]

TA贡献1847条经验 获得超11个赞
你可以用for循环做基本上相同的事情。这意味着只有list2突变。
def merge2(list1, list2):
result = []
for item in list1:
while list2[-1] < item:
result.append(list2.pop())
result.append(item)
while list2:
result.append(list2.pop())
return result
请注意,这不使用len(这是一个内置函数)
添加回答
举报