我有两份清单:
A = [3, 7, 8, 5]
B = [6, 2, 1, 4]
k = [3, 7, 8, 5, 6, 2, 1, 4]
我想比较这些数字并将它们添加到第三个列表中,如下所示:
sortiert = []
x = 0
i = 0
j = 0
while x < len(k):
if A[i] > B[j]:
sortiert.append(B[j])
j += 1
elif B[j] > A[i]:
sortiert.append(A[i])
i += 1
x += 1
但是我得到了这个错误:
IndexError: list index out of range
对于这一行:
if A[i] > B[j]:
当我将i
和j
定义为0时,为什么会出现此错误
如果列表不是空的,列表索引怎么可能超出范围
这在python3.7上运行,但在append函数中似乎没有正确地运行大于运算符。我将while循环附加到len(A)中,因为如果您试图在列表超出范围后继续循环,它将抛出并超出范围错误
问题是,当您将一个列表的所有四个元素添加到
sortiert
中时,当您耗尽该列表时,相应的索引将增加到4。在下一个循环迭代中,您尝试比较A[1] > B[4]
,从而导致错误您没有处理仅剩下的元素都在一个列表中的情况
通过查阅有关如何实现Python合并排序的任何参考资料,您可以了解如何合并两个列表
将来,学习插入战略性的
print
命令来跟踪程序的操作。这是一个非常基本但非常有效的调试工具相关问题 更多 >
编程相关推荐