美文网首页
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