python 两个list 求交集,并集,差集

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

大家好,又见面了,我是你们的朋友全栈君。

项目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的各种方法去处理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151880.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?

    a b在java中的意思是什么意思_java中”a=”+a “b=”+b是什么意思?展开全部1、在JAVA程序中由String和“+”参与的运算变量都会被转为字符类型,可以理解为先把32313133353236313431303231363533e4b893e5b19e31333335313237变量转为字符型然后在进行字符拼接。publicclassTest{publicstaticvoidmain(String[]args){intintnum=9;lon…

  • 如何学习嵌入式Linux_韦东山

    如何学习嵌入式Linux_韦东山我在100ASK_IMX6ULL售后群里,发现很多初学者只有单片机基础,甚至没有单片机基础。在学习Linux时,对很多概念比较陌生,导致不知道学什么,也不知道学了之后有什么用。所以我趁着五一假期,编写此文。从事嵌入式Linux培训12年来,我们写过很多《关于如何学习linux》的文章,这是最新的,本文将不断更新。第1章单片机和Linux的区别1.1有哪些产品使用单片机或Linux所有的电子产品,所用技术都可以认为要么是单片机,要么是Linux;GUI方面主要是QT/Android,它们都是运行于

  • windows channel

    windows channelBlockQueue.h#pragmaonce#include”Common.h”#include”Condition.h”templateclassBlockQueue{public: BlockQueue() :mutex_() ,notEmpty_(mutex_) { } voidput(constT&t) { MutexLo

  • python listnode.val(Python算法)

    在做leetcode简单题的时候发现了python的listcode,记录一下。源自:https://www.cnblogs.com/yuanmingzhou/p/9661152.htmlclassNode(object):def__init__(self):self.val=Noneself.next=NoneclassNode_handle():def__init__(self):self.cur_n

  • 算法与数据结构图_数据结构与算法笔记

    算法与数据结构图_数据结构与算法笔记一、什么是图1.概述首先,我们已经在之前学习过了树这种数据结构,树能反映一对多的关系,但是却无法反映多对多的关系,因此我们引入了图这种数据结构。对于图,其节点也可以叫做顶点,每个节点具有零或者多

  • computed radiography_select a reference library

    computed radiography_select a reference libraryaim:Inthispaper,ourgoalistoprovidesuchaphysicalsceneparse:tosegmentvisibleregionsintosurfacesandobjectsandtoinfertheirsupportrelations.Inparticular,weareinterestedinin…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号