我要完成的工作是:给两个以递增顺序排序的列表,创建并返回所有元素按排序顺序的合并列表(合并排序)。
我写的代码是:
def linear_merge(list1, list2):
a = 0
for it2 in list2:
if a < len(list1):
while it2 > list1[a]:
a += 1
if a == len(list1):
break
list1.insert(a, it2)
a += 1
return(list1)
我最初将以下while条件与前面的IF结合使用:
while it2 > list1[a] and a < len(list1):
但这一直给我以下关于list1 = ['aa', 'xx', 'zz']
,list2 = ['bb', 'cc']
文件“ / Users / zainkhaishagi 1 / Downloads / google-python-exercises / basic / list2.py“,第35行,在 linear_merge 而it2> list1 [a]和
在调试时,即使while条件中的AND设置为false,似乎传递到list1
的索引也超出范围。我希望false AND条件可以使while条件成为false,而无需检查索引list1
。显然不是这样。
答案 0 :(得分:1)
只需更改最初的顺序:
while it2 > list1[a] and a < len(list1)
收件人:
while a < len(list1) and it2 > list1[a]
如果第一个条件不是True
,将不再进行评估。看看这个例子,没有附加的if
:
def linear_merge(list1, list2):
a = 0
for it2 in list2:
while a < len(list1) and it2 > list1[a]:
a += 1
if a == len(list1):
break
list1.insert(a, it2)
a += 1
return list1
希望对您有帮助!