ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 统计两个列表的差异值

2021-07-15 19:59:02  阅读:141  来源: 互联网

标签:python 差异 list1 value list2 key 列表


列表有加法,列表的加法就是列表的拼接。

在列表中,没有减法操作,但有时我们需要计算两个列表的差异值,一般的求列表差异值的方法只能求得不存在重复元素的差异值,但是当元素存在重复现象,那求得的差异值并不是我们真正想要的,现发现了一个高级的求出列表差异值的方法,不仅可以得到差异值元素,还能得到相差的个数,真是妙,分享给大家 ~

1. 简单的求列表差异值的2种方法:

适用场景:不存在重复元素

方法一:

In [1]: list1 = [1, 2, 3, 4, 5, 6, 7, 8]

In [2]: list2 = [2, 3, 5, 6, 7]

In [3]: list(set(list1)-set(list2))
Out[3]: [8, 1, 4]

方法二:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
In [5]: list1 = [1, 2, 3, 4, 5, 6, 7, 8]

In [6]: list2 = [2, 3, 5, 6, 7]

In [7]: [i for i in list1 if not i in list2]
Out[7]: [1, 4, 8]

不适用场景:列表中存在重复元素

In [8]: list1 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

In [9]: list2 = [1, 2, 3, 3, 4, 4, 5]

In [10]: list(set(list1)-set(list2))
Out[10]: []

In [11]: [i for i in list1 if not i in list2]
Out[11]: []

可以看到,这时候无论用哪一种方法都无法得到我们想要的结果,这时候统计2个列表差异值的高级方法出来了。

2. 得到2个列表的差异值并给出差异值个数的高级方法

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
In [42]: from collections import Counter

In [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]: for key, value in (Counter(list1)-Counter(list2)).items():
    ...:     print("key = ", key, "value = ", value)
    ...:
key =  2 value =  1
key =  3 value =  1
key =  4 value =  2
key =  5 value =  4

In [46]: list((Counter(list1) - Counter(list2)).elements())
Out[46]: [2, 3, 4, 4, 5, 5, 5, 5]

注意,在用这个方法求差值的时候不同的减数和被减数得到的结果是不同的,要根据具体需要赋值。

标签:python,差异,list1,value,list2,key,列表
来源: https://blog.csdn.net/sinat_38682860/article/details/118767219

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有