IndexError:列表索引超出Python 3.5的范围

时间:2018-01-21 18:46:56

标签: python-3.5

我正在学习Python 3.我有两个列表:

A = [12, 28, 46, 32, 50]
B = [50, 12, 32, 46, 28]

如果A和B有任何共同的项目,则第三个列表应该返回它们(其索引在B中)。

[1, 4, 3, 2, 0]

我收到以下错误,

Line 6: IndexError: list index out of range

代码:

class Solution:
    def anagramMappings(self, A, B):
        result =[]
        for i in A:
            for j in B:
                if A[i]==B[i]:
                        result.append(j)
        return result

编辑:谢谢你的回答。我想出了下面的解决方案。它适用于大多数测试用例,除此之外,

Input:
[40,40]
[40,40]
Output:
[0,0,0,0]
Expected:
[1,1]

代码:

class Solution:
    def anagramMappings(self, A, B):
        result =[]
        for i in A:
            for j in B:
                if i==j:
                        result.append(B.index(j))
        return result

2 个答案:

答案 0 :(得分:3)

  

您正在迭代元素,指数A&乙

该行: for i in A将遍历列表并返回12,28..,类似的输出也将用于B列表。

但是您应该在索引上迭代ij,因此您可以通过len(A)len(B)得到它们的长度,然后使用它将其转换为可迭代的长度python的range功能。 您的代码应该是:

  class Solution:
        def anagramMappings(self, A, B):
            result =[]
            for i in range(len(A)):
                for j in range(len(B)):
                    if A[i]==B[j]:
                            result.append(j)
            return result

答案 1 :(得分:1)

python for循环迭代元素,而不是指标。所以第一次点击的if语句正在评估A[12] == B[50],我认为你不想在这里。请改为if i == j