【发布时间】:2019-10-07 17:14:52
【问题描述】:
我有两个列表:
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]
需要找到重叠的元素
我正在做作业。
if (a[i]==b[i]):
print(i)```
But I got this error:
IndexError: list index out of range,
I expect result:
1 , 2 , 3 , 5 , 8 , 13
【问题讨论】:
-
尝试使用
sets -
list a的元素少于list b,这就是您收到索引错误的原因 -
print(set(a).intersection(set(b))) -
问题在我回答之前就关闭了,所以只是添加(a)可以在没有集合的情况下执行此操作(b)其他人正确指出索引错误是因为您的列表长度不同.然而,问题远不止于此。您犯的根本错误是比较相同位置的元素。 Intersection 不关心顺序(这也是为什么集合比这里的列表更好)。
-
你确定你理解这个问题吗? “重叠”应该是什么意思?您可以将任务解释为查找匹配元素,即
a的第 n 个元素与b的第 n 个元素具有相同值的情况。您可以将任务解释为寻找共同元素,即在两个列表中都找到的值。但如果是后者,为什么a的数字 1 出现了两次(除了a恰好是斐波那契数)。