繁体   English   中英

检查 python 中的两个 arrays 在数组中有两个相同的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM