在for循环外定义列表索引会导致列表索引外错误

2024-09-27 00:12:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两份清单:

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]:

当我将ij定义为0时,为什么会出现此错误

如果列表不是空的,列表索引怎么可能超出范围


Tags: of列表indexlenif错误range数字
2条回答
A = [3, 7, 8, 5]
B = [6, 2, 1, 4]

sortiert = []
x = 0
i = 0
j = 0

while x < len(A): # <- not sure what your reference to k is?
    if A[i] > B[j]:
        sortiert.append(B[j])
        j += 1
    elif B[j] > A[i]:
        sortiert.append(A[i])
        i += 1
    x += 1
    print(sortiert)

这在python3.7上运行,但在append函数中似乎没有正确地运行大于运算符。我将while循环附加到len(A)中,因为如果您试图在列表超出范围后继续循环,它将抛出并超出范围错误

问题是,当您将一个列表的所有四个元素添加到sortiert中时,当您耗尽该列表时,相应的索引将增加到4。在下一个循环迭代中,您尝试比较A[1] > B[4],从而导致错误

您没有处理仅剩下的元素都在一个列表中的情况

  1. 通过查阅有关如何实现Python合并排序的任何参考资料,您可以了解如何合并两个列表

  2. 将来,学习插入战略性的print命令来跟踪程序的操作。这是一个非常基本但非常有效的调试工具

相关问题 更多 >

    热门问题