我希望得到两个列表之间的区别。
我正在寻找像this这样的解决方案,我只想考虑非唯一列表值。
x = [1, 1, 2, 2, 3]
y = [1, 2]
# i want
z = x - y
# z = [1, 2, 3]
我的代码上方的解决方案将两个列表转换为集合,允许-
运算符处理它们,但从列表中删除非唯一值。你能想到一个简单的一个班轮'做我正在寻找的解决方案?
答案 0 :(得分:1)
您可以使用collections.Counter
查找每个列表中的元素计数。然后你可以从结果中获取差异并重建一个列表。
>>> from collections import Counter
>>> x = [1, 1, 2, 2, 3]
>>> y = [1, 2]
>>> [k for _ in range(v) for k,v in (Counter(x) - Counter(y)).iteritems()]
[1, 2, 3]
缺点是,结果的顺序与输入列表的顺序没有实际关联。上面显示的结果看起来排序的事实是依赖于实现的,可能只是巧合。
答案 1 :(得分:1)
可能不是幻想,首先想到的是......
x=[1,1,2,2,3]
y=[1,2]
_ = [ x.remove(n) for n in y if n in x ]
x
[1,2,3]
答案 2 :(得分:1)
这是我的看法:
.section-body {
display: none;
border: 1px solid black;
overflow:auto; /* ADDED */
}
答案 3 :(得分:0)
您刚刚描述了两个集的并集,因此请使用set
:
>>> list(set(x).union(set(y)))
[1, 2, 3]