列表是有加法的,列表的加法就是列表的拼接。在列表中,没有减法运算,但有时我们需要计算两个列表的差值。一般计算列表差值的方法只能得到没有重复元素的差值,但是当有重复元素时,那么得到的差值并不是我们真正想要的。现在我们找到了一种高级方法来查找列表的差异值。不仅可以得到差值元素,还可以得到差值个数。列表差值的两种计算方法:适用场景:没有重复元素方法一:在[1]中:list1=[1,2,3,4,5,6,7,8]在[2]中:list2=[2,3,5,6,7]In[3]:list(set(list1)-set(list2))Out[3]:[8,1,4]方法二:In[5]:list1=[1,2,3,4,5,6,7,8]In[6]:list2=[2,3,5,6,7]In[7]:[iforiinlist1ifnotiinlist2]Out[7]:[1,4,8]不适用场景:列表中有重复元素'''学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025,寻找志同道合的小伙伴,互相帮助。群里还有不错的视频学习教程和PDF电子书!'''在[8]中:list1=[1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]在[9]中:list2=[1,2,3,3,4,4,5]In[10]:list(set(list1)-set(list2))Out[10]:[]In[11]:[iforiinlist1ifnotiinlist2]Out[11]:[]可见,此时无论使用哪种方法,都无法得到我们想要的结果。这时候,一种计算两个列表差异的高级方法就出来了。2.获取两个列表的差值并给出差值个数的进阶方法在[42]中:fromcollectionsimportCounterIn[43]:list1=[1,2,2,3,3,3,4,4,4,4,5,5,5,5,5]In[44]:list2=[1,2,3,3,4,4,5]In[45]:forkey,valuein(Counter(list1)-Counter(list2)).items():...:print("key=",key,"value=",value)...:key=2value=1key=3value=1key=4value=2key=5value=4In[46]:list((Counter(list1)-Counter(list2)).elements())Out[46]:[2,3,4,4,5,5,5,5]注意使用该方法求差时,不同的减数和被减数会得到不同的结果,需要根据具体需要赋值。
