问题是这样的,拿两个列表,例如这两个:
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]
并编写一个程序,返回一个列表,该列表仅包含列表之间共有的元素(没有重复项)。确保您的程序适用于两个不同大小的列表。
这是我的代码:
a = [1, 1, 2, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
c = []
for i in a:
if i in b and i not in c:
c.append([i])
print(c)
尽管“我不在 c”声明中,我的输出仍然给我重复项。为什么是这样?我确定它非常明显,我只是看不到它!
原文由 Charlie Miller 发布,翻译遵循 CC BY-SA 4.0 许可协议
True
包含i
c
i not in c
您应该单独附加i
:c.append(i)
或者
编辑 为@Ev。 Kounis 在评论中建议,您将通过使用获得一些速度
c = set(a).intersection(b)
。