【发布时间】:2017-01-26 15:48:19
【问题描述】:
我是 python 新手,想听听您对我的函数的建议。我想做的如下。
我有 2 个列表 A 和 B。(例如 A = [1,2,3,4,5], B = [4,3,2,1])我想创建一个在列表 B 中不存在的 A。所以在这种情况下为 5。
我在下面写了一个函数,但它不起作用,我无法弄清楚代码中有什么问题......谁能帮我理解错误是什么?这似乎很容易,但对我来说很难。谢谢你的帮助!!
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
【问题讨论】:
-
把这个
eliminated = eliminated.append(x)改成这个eliminated.append(x) -
frozenset(a) - frozenset(b)-- 这将产生一个可用作可迭代的不可变集合,它将包含 a 中不在 b 中的所有项目。请注意,副作用是a或b中的任何重复项将不存在,也不会保留顺序。 -
设置差异是解决这个问题的方法,因为它在
inO(n^2) 解决方案面前弯曲它的 O(n) 肌肉:D。
标签: python arrays list python-2.7 missing-data