我正在学习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
答案 0 :(得分:3)
您正在迭代元素,不指数A&乙
该行:
for i in A
将遍历列表并返回12,28..
,类似的输出也将用于B列表。
但是您应该在索引上迭代i
和j
,因此您可以通过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
。