求列表a中不包含列表b中元素的集合(列表)
比如:
array_diff([1,2,2,2,3],[2]) == [1,3] #第一个参数是列表a,第二个参数是列表b
方法1:
遍历a中的元素,检查它们是否出现在列表b中,若没有出现在列表b中,则把这个元素添加到结果列表中。
def array_diff(a, b):
if len(a)==0 or len(b)==0:
return a
ret=[]
flag=0
for i in a:
for j in b:
if i==j:
flag=1
break
if flag==0:
ret.append(i)
else:
flag=0
return ret
方法2:
思路和方法1一样
def array_diff(a, b):
set_b = set(b)
return [i for i in a if i not in set_b]
方法3:
def array_diff(a, b):
return filter(lambda i: i not in b, a)
filter()函数用于过滤序列,它的第一个参数是函数名或者像lambda表达式这种,它的第二个参数是列表,列表的每个元素作为参数传递给函数进行判断(这个函数返回 True 或 False),最后将返回 True 的元素放到新列表中。