Python-从多个列表中查找不匹配的值

时间:2016-09-19 03:33:05

标签: python arrays list python-2.7 missing-data

我是python的新手,我想得到你对我的功能的建议。我想做的是下面。

我有2个列表A和B.(例如A = [1,2,3,4,5],B = [4,3,2,1])我想创建一个找到值的函数列表B中不存在的A.所以在这种情况下为5.

我在下面编写了一个函数,但它不起作用,我无法弄清楚代码中有什么问题....有谁能帮我理解什么是bug?这似乎很容易但对我来说很难。谢谢你的帮助!!

def finder(arr1,arr2):
    arr1 = sorted(arr1)
    arr2 = sorted(arr2)

    eliminated = []

    for x in arr1:
        if x not in arr2:
            eliminated = eliminated.append(x)
        else:
            pass
    return eliminated

2 个答案:

答案 0 :(得分:3)

.append()方法将修改原始列表。更改以下行

eliminated = eliminated.append(x)

eliminated.append(x)

您也不需要对列表进行排序。

答案 1 :(得分:3)

以下是三种不同的方法。第一种方式使用集合差异,第二种方式使用内置过滤器功能,第三种方式使用列表理解。

Python 2.7.12 (default, Jul  9 2016, 12:50:33)
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> A=[1,2,3,4,5]
>>> B=[4,3,2,1]
>>> def a(x,y):
...   return list(set(x)-set(y))
...
>>> a(A,B)
[5]
>>> def b(x,y):
...   return filter(lambda A: A not in y, x)
...
>>> b(A,B)
[5]
>>> def c(x,y):
...   return [_ for _ in x if _ not in y]
...
>>> c(A,B)
[5]