【发布时间】:2021-01-21 09:52:46
【问题描述】:
我正在尝试编写一个将两个列表作为输入的函数:def array_diff(a, b):。在这个函数中,我想返回一个过滤的a 列表,该列表将删除列表b 中也存在的所有项目。它会这样工作:
array_diff([1,2],[1]) == [2]
或者:
array_diff([1,2,2,2,3],[2]) == [1,3]
我写了以下代码:
def array_diff(a, b):
for i in a:
if i in b:
a.remove(i)
return a
但即使我没有收到任何错误,当我尝试运行此函数并列出 a 有两个具有相同值的项目,并且它存在于列表 b 中时,它并没有正确过滤它。我不确定为什么会这样,但我已经尝试过使用a.pop(i),但也没有用。我还尝试使用for i in range(len(a)) 遍历列表,但我收到错误消息说我遍历了列表的索引。
希望你能帮助我,谢谢!
【问题讨论】:
-
迭代时不要移除元素。
-
it doesn't filter it properly。请解释一下,给出一个最小的可重现示例 -
sets 可能会使这变得容易得多。 -
@AAAlex123 在这里:
a was [1,2,2], b was [2], expected [1]: [1, 2] should equal [1]
标签: python python-3.x list function