我是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
答案 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]