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)


相关推荐

  • 华为手机如何把大量照片导入到电脑上去_华为手机照片批量导入电脑

    华为手机如何把大量照片导入到电脑上去_华为手机照片批量导入电脑在华为手机和电脑上同时安装华为手机助手,然后进入手机系统的关于手机,连续点击版本号5次,打开开发者模式。步骤阅读步骤阅读2用数据线把手机插入电脑主机,点击传输文件。步骤阅读3手机界面弹出

  • html下拉框设置默认值_html下拉列表框默认值[通俗易懂]

    html下拉框设置默认值_html下拉列表框默认值[通俗易懂]HTML和JavaScript综合练习题一、单项选择1.Web使用(D)在服务器和客户端之间传输数据。A.FTPB.TelnetC.E-mailD.HTTP2.HTTP服务默认……name的属性值必须要相同,必须有一个value值实现默认选中的属性:checked=”checked”-文件输入项(在后期上传时候用到):-下拉………

    2022年10月31日
  • android之选择联系人并返回电话号码

    在跟着这个教程联系的时候,它所用到的选择联系人方式是自己从数据库里把联系人读取出来,然后用listview显示,选择后返回手机号码,这样做在点击选择联系人的时候,需要时间去加载,并且显示出来的联系人好像并不全,总之感觉不好,想通过调用系统联系人的方式选择,不用自己去处理界面。结果还不错:MainActivity:package jason.pickcontact;imp

  • Python学习笔记(28)-Python读取word文本「建议收藏」

    Python学习笔记(28)-Python读取word文本「建议收藏」一,简介Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。二,相关概念如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解python-docx模块的几个概念。1,Document对象,

  • latex大括号各行内容左对齐_word公式大括号左对齐

    latex大括号各行内容左对齐_word公式大括号左对齐终于找到个好用的了{aaaaaaaaaaaaaaaaabc\left\{\begin{array}{l}a\\aaaaaaaaaaaaaaa\\abc\end{array}\right.⎩⎨⎧​aaaaaaaaaaaaaaaaabc​$$\left\{\begin{array}{l}a\\aaaaaaaaaaaaaaa\\abc\end{array}\right.$$…

    2022年10月11日
  • c++ stl容器_c++ std是什么

    c++ stl容器_c++ std是什么文章目录C++中常用的std标准容器顺序容器:有序关联容器:无序关联容器:顺序容器1. vector容器a. vector的定义与初始化b. vecotr常使用的操作c. 小结:2. string容器a. string的初始化b. string中包含的专有的操作(相对于vector来说)c字符串的转换函数d 对字符的操作(在cctype头文件中,并不属于string头文件的范围,但是关系很紧密的)…

发表回复

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

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