python比较两个列表

转载来源:python中如何比较两个列表?

对两个列表的比较在平常用的是非常多的,例如你处理的数据放到了列表中,间隔一段时间又获取到了新的数据,这个时候可以通过对比来确定是否有新数据产生,以下为具体比较的几种方式。

1、python sort()方法配合==比较符

要比较的两个列表可能顺序不一致,所以我们可以先sort()排序,这样列表中的元素位置我们就可以忽略了,因为如果两个列表相等,元素的索引也是一样的。

L1 = [1, 2, 3, 4, 5]
L2 = [5, 4, 3, 2, 1]

if L1.sort() == L2.sort():
    print('they are same')
else:
    print('they are different')

>> they are same

 2、先转成集合,然后再用==比较

这种方式是针对列表中有重复数据项,但我们不太关心,可以用这种方式,而且集合也不考虑元素的顺序:

L1 = [1, 2, 3, 4, 5, 2]
L2 = [5, 4, 3, 2, 1]

S1 = set(L1)
S2 = set(L2)

if S1 == S2:
    print('they are same')
else:
    print('they are different')

>> they are same

3、使用collection模块的方法counter()

collection.counter()方法可以有效地比较列表,因为 counter() 函数可以计算列表中项目的出现的次数(或频率),然后输出 一个字典的格式的数据, 如:值:次数(频率), 因此如果两个列表具有完全相同的字典输出,我们可以推断这些列表是相同的,而且列表顺序对 counter() 方法是没有影响。

from collections import Counter

L1 = [1, 2, 3, 4, 5, 2]
L2 = [5, 4, 3, 2, 1]
if Counter(L1) == Counter(L2):
    print('they are same')
else:
    print('they are different')

>> they are different

4、用列表推导式

使用列表推导方式的原理的查找两个列表中的不同的元素,即该元素不在列表A中或不在列表B中,那么可以判断这2个列表是不同的,因为他们有不同的元素,反之可以判断他们是一样的,代码如下:

L1 = [1, 2, 3, 4, 5, 6]
L2 = [5, 4, 3, 2, 1]
r = [ x for x in L1+L2 if x not in L1 or x not in L2]
print(r)
if not r:   # 空列表[] 为false,非空为true
    print('they are same')
else:
    print('they are different')

>> they are different

以上只是比较单层数据的列表比较,如果有嵌套类别比较,可以参考使用deepdiff

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值