Python 存在重复项时查找列表之间的差异

Python 存在重复项时查找列表之间的差异,python,python-3.x,Python,Python 3.x,我需要使用python找出两个列表之间的差异。这个问题以前在堆栈溢出上被问过很多次,但没有一个提到重复(即[8]和[8,0,1,8]之间的区别是[0,1];我需要它是[0,1,8],因为每个数字在我的程序中都很重要) 我尝试过使用numpy的setdiff1d,但它无法满足上述标准 ydiff = np.setdiff1d(ydigits, jdigits) 如上所述,这只说明同一项是否在列表中,而不是它在该列表中的次数。还有其他功能可以使用吗?您可以对对象使用减法运算符: >>&

我需要使用python找出两个列表之间的差异。这个问题以前在堆栈溢出上被问过很多次,但没有一个提到重复(即
[8]
[8,0,1,8]
之间的区别是
[0,1]
;我需要它是
[0,1,8]
,因为每个数字在我的程序中都很重要)

我尝试过使用numpy的setdiff1d,但它无法满足上述标准

ydiff = np.setdiff1d(ydigits, jdigits)

如上所述,这只说明同一项是否在列表中,而不是它在该列表中的次数。还有其他功能可以使用吗?

您可以对对象使用减法运算符:

>>> from collections import Counter
>>> list((Counter([8, 0, 1, 8]) - Counter([8])).elements())
[8, 0, 1]

听起来你必须使用自己的算法。