[英]checking two arrays in python which has two same value in an array
我有两个 arrays 并且我试图找到在第一个数组中但不在第二个数组中的值。 但是,有一个问题,虽然第一个数组有两个b,但由于另一个数组只有一个b,所以看到是一样的,给output说没有区别。 我怎么解决这个问题?
x = ["a","b","b"]
y = ["a","b"]
print(set(x)-set(y))
尝试这个:
from collections import Counter
res = [k for k, v in (Counter(x) - Counter(y)).items() for _ in range(v)]
这种方法的复杂性是你能得到的最好的(即 O(n))。
例子:
>>> x = [1,2,2,2,3,4,5]
>>> y = [1,2,4]
>>> res = [k for k, v in (Counter(x) - Counter(y)).items() for _ in range(v)]
>>> res
[2, 2, 3, 5]
使用这种方法,您将失去元素的顺序。 让我知道你的情况是否不好。
这应该可以解决问题
for i in y:
if (i in x):
x.remove(i)
print(x)
我的方法是列表理解:
x = ["a","b","b"]
y = ["a","b"]
[x.remove(element) for element in y if element in x]
Output:
['b']
它看起来是一个简单的解决方案: a==b
>>> b=["1","2","3"]
>>> a=["1","2","3"]
>>> a==b
True
>>> a=["1","2","32"]
>>> a==b
False
>>> a=["1","2","2"]
>>> a==b
False
>>> a=["1","2","3","4"]
>>> a==b
False
>>> a=["1","2","3"]
>>> a==b
True
>>> a=["1","2"]
>>> a==b
False
>>> a=["1","3","2"]
>>> a==b
False
>>> a=["1","2","3"]
>>> a==b
True
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.