精华内容
下载资源
问答
  • python 两个list交集,并集,差集

    万次阅读 多人点赞 2016-06-09 17:59:52
    如果有两个数组,分别要求交集,并集与差集,怎么实现比较方便呢? 当然最容易想到的是对两个数组做循环,即写两个for循环来实现。这种写法大部分同学应该都会,而且也没有太多的技术含量,本博主就不解释了。这里...

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
    经常有同学私信或留言询问相关问题,V号bitcarmanlee。github上star的同学,在我能力与时间允许范围内,尽可能帮大家解答相关问题,一起进步。

    在python中,数组可以用list来表示。如果有两个数组,分别要求交集,并集与差集,怎么实现比较方便呢?
    当然最容易想到的是对两个数组做循环,即写两个for循环来实现。这种写法大部分同学应该都会,而且也没有太多的技术含量,本博主就不解释了。这里给大家使用更为装bility的一些方法。

    老规矩,talk is cheap,show me the code

    #!/usr/bin/env python
    #coding:utf-8
    
    '''
    Created on 2016年6月9日
    
    @author: lei.wang
    '''
    
    def diff(listA,listB):
        #求交集的两种方式
        retA = [i for i in listA if i in listB]
        retB = list(set(listA).intersection(set(listB)))
        
        print "retA is: ",retA
        print "retB is: ",retB
        
        #求并集
        retC = list(set(listA).union(set(listB)))
        print "retC1 is: ",retC
        
        #求差集,在B中但不在A中
        retD = list(set(listB).difference(set(listA)))
        print "retD is: ",retD
        
        retE = [i for i in listB if i not in listA]
        print "retE is: ",retE
        
    def main():
        listA = [1,2,3,4,5]
        listB = [3,4,5,6,7]
        diff(listA,listB)
        
    if __name__ == '__main__':
        main()
    

    让code run起来

    retA is:  [3, 4, 5]
    retB is:  [3, 4, 5]
    retC1 is:  [1, 2, 3, 4, 5, 6, 7]
    retD is:  [6, 7]
    retE is:  [6, 7]
    

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

    展开全文
  • python个list取交集

    千次阅读 2018-08-17 01:17:56
    现在有五个list 分别为a,b,c,d,e,他们的交集,起初我这么写: a=[4] b=[4,2] c=[3,4] d=[1,4] e=[5,4] item_list = [a,b,c,d,e] def test(item_list): print item_list if len(item_list) == 1: ...

    python处理算法是真的简单,来个小例子:

    现在有五个list 分别为a,b,c,d,e,取他们的交集,起初我这么写:

    a=[4]
    b=[4,2]
    c=[3,4]
    d=[1,4]
    e=[5,4]
    item_list = [a,b,c,d,e]
    def test(item_list):
        print item_list
        if len(item_list) == 1:
            return item_list[0]
        elif len(item_list) == 0:
            return []
        flag = 0
        for item in item_list:
            if len(item) > 0:
                pass
            else:
                flag = 1
        if flag == 1:
            return []
        else:
            item_list.append(list(set(item_list[0]).intersection(set(item_list[1]))))
            item_list.remove(item_list[0])
            item_list.remove(item_list[0])
            item_list = test(item_list)
            return item_list
    item_list = test(item_list)
    print item_list

    代码看着很不舒服,而且效率也低,于是改进如下:

    
    
    fm = lambda x,y: list(set(x).intersection(set(y))) if isinstance(x, list) and isinstance(y, list) else 'error'
    fn = lambda x: x[0] if len(x) == 1 else [] if  len(x) == 0 else reduce(fm,tuple(y for y in x))
    item_list= fn(item_list)
    print item_list
    
    
    展开全文
  • python 两个list取交集、并集和差集

    千次阅读 2017-12-16 21:21:19
    假设a,b为两个list 1、交集list(set(a).intersection(set(b)))2、并集list(set(a).union(set(b)))3、差集(list b中有,而list a中没有的)list(set(a).difference(set(b)))

    假设a,b为两个list
    1、交集

    list(set(a).intersection(set(b)))

    2、并集

    list(set(a).union(set(b)))

    3、差集(list a中有,而list b中没有的)

    list(set(a).difference(set(b)))
    展开全文
  • python两个 list 获取交集,并集,差集的方法 1. 获取两个list交集/方法一: a=[2,3,4,5] b=[2,5,8] tmp = [j for j in a if j in b] #列表推导式求的两个列表的交集 print(tmp) print("**"*100) 方法二: print...

    python两个 list 获取交集,并集,差集的方法

    1. 获取两个list 的交集/

    方法一:
    a=[2,3,4,5]
    b=[2,5,8]
    tmp = [j for j in a if j in b] #列表推导式求的两个列表的交集
    print(tmp)
    方法二:
    print(list(set(a).intersection(set(b)))) # #列用集合的取交集方法
    方法三:
    lst = []
    for i in a:
    if i in b :
    lst.append(i)
    print(lst)

    2. 获取两个 list 的差集

    方法一:
    ret = list(set(a)-set(b))
    print(ret)
    方法二:
    print(list(set(b).difference(set(a)))) # b中有而a中没有的

    3.并集

    方法一:
    rets= list(set(a).union(set(b)))
    print(rets)
    方法二:
    print(list(set(b) | (set(a))))

    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 获取两个list交集 #方法一: a=[2,3,4,5] b=[2,5,8] tmp = [val for val in a if val in b] print(tmp) #[2, 5] 获取两个list 的并集 print list(set(a).union(set(b))) 获取两个 list 的差集 print list(set(b)....
  • Python两个list取交集、并集、差集以及为字符串str添加、插入特定字符的操作总结Python两个list取交集、并集、差集为字符串str添加、插入特定字符的操作总结 Python两个list取交集、并集、差集 list(set(list...
  • 1. 交集 #方法一 tmp = [val for val in a if val in b] print tmp #方法二 print list(set(a).intersection(set(b))) 2. 并集 print list(set(a).union(set(b))) 3. 差集 print list(set(b)....
  • 1. 获取两个list交集 #方法一: a=[2,3,4,5] b=[2,5,8] ​tmp = [val for val in a if val in b] #列表推导式求的两个列表的交集 ​print tmp #[2, 5] #方法二 ​ print list(set(a).intersection(set(b))) #列...
  • > a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] > b = [2, 5, 8, 11, 0] ... #取两个list交集:jiaoji > jiaoji = list(set(a).intersection(set(b))) print(jiaoji) > #取两个list交集:bingji > bin...
  • 1. 获取两个 list交集 a = [1, 2, 3, 4] b = [1, 2, 5] print(list(set(a).intersection(set(b)))) 2. 获取两个 list 的并集 print(list(set(a).union(set(b)))) 3. 获取两个 list 的差集 print(list...
  • 主要介绍了Python实现两个list交集,并集,差集的方法,结合实例形式分析了Python使用intersection、union及difference方法实现两个集合list的交集、并集与差集操作技巧,需要的朋友可以参考下
  • 1.获取两个liet的交集 方法一: a = [2,3,4] b = [3,4,5,6] tmp = [i for i in a if i in b] #列表推导式求的...print(list(set(a).intersection(set(b))) #列用集合的取交集方法 方法三: lst = [] for i in ...
  • python两个list交集 r = list(set(data2).intersection(set(data))) print(r[0]*r[1])
  • 1. 获取两个list交集:(方法二比方法一快很多!) #方法一: a=[2,3,4,5] b=[2,5,8] tmp = [val for val in a if val in b] print (tmp) #[2, 5] #方法二 print (list(set(a).intersection(set(b)))) 2. 获取...
  • 1. 获取两个list交集: #方法一: a=[2,3,4,5] b=[2,5,8] tmp = [val for val in a if val in b] print tmp #[2, 5] #方法二 print list(set(a).intersection(set(b))) #方法二比方法一快很多! ...
  • 1. 获取两个list交集 #方法一: a=[2,3,4,5] b=[2,5,8] tmp = [val for val in a if val in b] print tmp #[2, 5] #方法二 print list(set(a).intersection(set(b))) 2. 获取两个list 的并集 print ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,901
精华内容 8,360
关键字:

python两个list取交集

python 订阅