python中列表如何比较大小_如何比较python中的列表/集合列表?

所以你需要两个项目列表之间的区别。first_list = [['Test.doc', '1a1a1a', 1111],

['Test2.doc', '2b2b2b', 2222],

['Test3.doc', '3c3c3c', 3333]]

secnd_list = [['Test.doc', '1a1a1a', 1111],

['Test2.doc', '2b2b2b', 2222],

['Test3.doc', '8p8p8p', 9999],

['Test4.doc', '4d4d4d', 4444]]

首先,我将把每个列表都转换成一个元组列表,因为元组是可散列的(列表不是),所以您可以将元组列表转换成一组元组:first_tuple_list = [tuple(lst) for lst in first_list]

secnd_tuple_list = [tuple(lst) for lst in secnd_list]

然后,您可以进行设置:first_set = set(first_tuple_list)

secnd_set = set(secnd_tuple_list)

编辑(sdolan建议):您可以对一行中的每个列表执行最后两个步骤:first_set = set(map(tuple, first_list))

secnd_set = set(map(tuple, secnd_list))

注意:map是一个函数编程命令,它将第一个参数中的函数(在本例中为tuple函数)应用于第二个参数中的每个项(在本例中为列表列表列表)。

找到集合之间的对称差分:>>> first_set.symmetric_difference(secnd_set)

set([('Test3.doc', '3c3c3c', 3333),

('Test3.doc', '8p8p8p', 9999),

('Test4.doc', '4d4d4d', 4444)])

注first_set ^ secnd_set等同于symmetric_difference。

另外,如果您不想使用集合(例如,使用Python2.2),那么这样做非常简单。E、 g.列表理解:>>> [x for x in first_list if x not in secnd_list] + [x for x in secnd_list if x not in first_list]

[['Test3.doc', '3c3c3c', 3333],

['Test3.doc', '8p8p8p', 9999],

['Test4.doc', '4d4d4d', 4444]]

或者使用函数filter命令和lambda函数。(你必须测试这两种方法并结合起来)。>>> filter(lambda x: x not in secnd_list, first_list) + filter(lambda x: x not in first_list, secnd_list)

[['Test3.doc', '3c3c3c', 3333],

['Test3.doc', '8p8p8p', 9999],

['Test4.doc', '4d4d4d', 4444]]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值