【发布时间】:2020-03-28 07:50:34
【问题描述】:
def merge(a1,a2):
if len(a1)<1:
return a2
if len(a2)<1:
return a1
a1item=a1[0]
a2item=a2[0]
i=1
j=1
merge=[]
while(a1item or a2item):
print(a1item,a2item)
if a1item<a2item:
merge.append(a1item)
a1item=a1[i]
i+=1
else:
merge.append(a2item)
a2item=a2[j]
j+=1
print(merge)
merge([1,2,3],[3,54,100])
我在 a1item=a1[i] 如何在循环指向最后一个元素时停止时出错。 建议我不使用内置函数
【问题讨论】:
-
您需要检查循环内部。每次
i增加时,您都需要查看它是否超出了其中一个列表的末尾。如果是这样,那之后不要索引到该列表中。 -
@eric 你的陈述是正确的......但与错误或问题无关?
-
与其他一些编程语言不同,python 不会让您访问不存在的元素。这意味着像 [1,2,3][3] 这样的东西会给你一个错误信息。话虽这么说,
while(a1item or a2item):并不像您期望的那样工作,因为您试图捕捉a1item或a2item何时变为未定义,这在 python 中永远不会发生。此外,当a1item或a2item为0时,该条件将变为False
标签: python python-3.x if-statement while-loop merge