首页 > 解决方案 > 如果它们存在于列表 b 中,则从列表 a 中删除所有值

问题描述

def array_diff(a, b):

result = []
i = 0;
j = 0;

if (a[i] == b[j]):
        a = a.remove(a[i]) #append() method in python adds a single item to the existing list
        
        if i<len(a):
            i+=1;
        return a;
        if j<len(b):
            i+=1;
        return a;

它应该从列表 a 中删除所有值,这些值存在于列表 b 中。如果我应该举个例子:

array_diff([1,2],[1]) == [2] 
array_diff([1,2,2,2,3],[2]) == [1,3]

我对 Python 语言非常陌生,因此我将不胜感激。我做错了什么,我怎样才能让它变得更好?

我编辑:

def array_diff(a, b):
    b=set(b)
    for v in a:
        if v in b:
           a.remove(v)
    return list(a)

但是,当 a 为 [1,2,2] 时,b 为 [2],预期为 [1]:它返回 [1, 2] 而它应该等于 [1]

标签: pythonarraysfunction

解决方案


def diff(lst,lst2):
    lst=set(lst)
    for v in lst2:
        if v in lst:
           lst.remove(v)
    return list(lst)
print(diff([1,2,3],[3,5,7,8]))

推荐阅读