两个列表之间的差异大于两个列表中元素数量的差异

时间:2018-10-31 19:49:19

标签: python list

我有两个已处理文件的列表(A,B)。列表A包含所有初始文件,列表B包含所有已成功处理的文件(因此第二个列表(B)是第一个列表的子集)。

A包含231453个项目。

B包含124769个项目。

我想减去它们以查看哪些文件没有得到处理。 (C应包含106684个项目)

为此,我正在使用 set

newlist=[]
newlist2=[]
newlist3=[]
newlist=( set(A) - ( set(A) & set(B) ) )
newlist2=(set(A)^set(B))
newlist3=(set(A) - set(B))
print len(newlist)
print len(newlist2)
print len(newlist3)

结果是:

134173
161662
134173
  

为什么有比预期更多的物品?

2 个答案:

答案 0 :(得分:0)

您已指定A和B为列表。列表中可能存在重复项,这些重复项在转换为set时会丢失。

  

集合是无序且无索引的集合。在Python集中   用大括号括起来。

您可以的话

not_processed = filter(lambda x: x in A, B)

OR

not_processed = [x for x in A if x in B]

如果X值位于B中,则上面的代码将使A中存在的所有x值均变

答案 1 :(得分:0)

您的B包含一些不在A中的项目,如果B是A的子集,则所有三个长度都应该相同。您的对称异形的长度较大,因此您的B包含某些不在A中的项目

相关问题