首页 > 解决方案 > 如何修复列表索引超出范围错误?

问题描述

我从下面的代码中收到“列表索引超出范围”错误。代码的目的是确定两个列表中都存在的值。我知道编写此代码可能有更简洁的方法,但这是我的解决方案,我想知道是否可以这样做。

我尝试从数组的长度中减去一个(在“for”范围内),看看这是否是问题所在,但它仍然返回相同的错误。

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
n = 0
n2 = 0
for n1 in range(0, len(a)-1):
    for n2 in range(0, len(b)-1):
        if a[n1] == b[n2]:
            print(a[n1])
            n2 += 1
        else:
            n2 += 1
        n1 += 1

如果代码正常工作,它将打印数字:1、1、2、3、5、8 和 13。

标签: python

解决方案


我假设您来自 Java 之类的语言,您主要通过访问索引处的元素来迭代列表或数组。

在 Python 中,您可以迭代列表的元素。所以在你的情况下,你可以写类似

for n1 in a:
    for n2 in b:
        if n1 == n2:
            print(n1)
            ...

推荐阅读