美文网首页
python两个列表求交、并、差

python两个列表求交、并、差

作者: 壁花烧年 | 来源:发表于2017-09-27 11:15 被阅读0次

在python中,如果有两个数组,分别要求交集,并集与差集,怎么实现比较方便呢?
当然最容易想到的是对两个数组做循环,即写两个for循环来实现。这种写法大部分同学应该都会,而且也没有太多的技术含量,下面介绍一些常用的方法。

# -*- encoding:utf-8 -*-


def diff(listA, listB):
    # 交集方法1
    retA = [i for i in listA if i in listB]
    # 交集方法2
    retB = list(set(listA).intersection(set(listB)))
    print '---------交集--------'
    print 'retA:%s' % retA
    print 'retB%s' % retB

    # 并集
    retC = list(set(listA).union(set(listB)))
    print '---------并集--------'
    print 'retC:%s' % retC

    # 差集 方法1 在B中不在A中
    retD = list(set(listB).difference(set(listA)))
    print '---------差集方法1--------'
    print 'retD:%s' % retD

    # 差集 方法2 在B中不在A中
    retE = [i for i in listB if i not in listA]
    print '---------差集方法2-----'
    print 'retE:%s' % retE


if __name__ == '__main__':
    listA = [1, 2, 3, 4, 5]
    listB = [3, 4, 5, 6, 7]
    diff(listA, listB)

结果如下图:

image.png

结合代码来看,大体上是两种思路:
1.使用列表解析式。列表解析式一般来说比循环更快。
2.将list转成set以后,使用set的各种方法去处理。

相关文章

网友评论

      本文标题:python两个列表求交、并、差

      本文链接:https://www.haomeiwen.com/subject/vtayextx.html