python两个 list 交集,并集,差集的方法+两个tuple比较操作+两个set的交集,并集,差集操作+两个dict的比较操作
转自:http://blog.chinaunix.net/uid-200142-id-3992553.html
有时候,为了需求,需要统计两个 list 之间的交集,并集,差集。查询了一些资料,现在总结在下面:
1. 获取两个list 的交集
print list(set(a).intersection(set(b)))
- print list(set(a).union(set(b)))
3. 获取两个 list 的差集
- print list(set(b).difference(set(a))) # b中有而a中没有的
>>> r=[1,2,3,4,5]
>>> m=[2,4]
>>> list(set(r).intersection(set(m)))
[2, 4]
>>> a=[1,2,3,4,5]
>>> b=[2,4,6,8]
>>> list(set(r).intersection(set(m)))
[2, 4]
>>> list(set(a).union(set(b)))
[1, 2, 3, 4, 5, 6, 8]
>>> list(set(b).difference(set(a))) # b中有而a中没有的
[8, 6]
>>> list(set(a).difference(set(b))) # a中有而b中没有的
[1, 3, 5]
>>> a=[3,4,2,5,1]
>>> list(set(r).intersection(set(m)))
[2, 4]
>>> list(set(a).union(set(b)))
[1, 2, 3, 4, 5, 6, 8]
>>> list(set(b).difference(set(a))) # b中有而a中没有的
[8, 6]
>>> list(set(a).difference(set(b))) # a中有而b中没有的
[1, 3, 5]
>>> #两个list比较的话,利用了set的属性,对各自元素的顺序无关,但是会过滤掉相同的元素
set操作:
>>> a=set(a)
>>> a
set([1, 2, 3, 4, 5])
>>> b=set(b)
>>> b
set([8, 2, 4, 6])
>>> a | b #求并集
set([1, 2, 3, 4, 5, 6, 8])
>>> a - b #求差集,a中有而b中无
set([1, 3, 5])
>>> b - a #求差集,b中有而a中没有的
set([8, 6])
>>> a & b #求交集
set([2, 4])
>>> a in b
False
>>> a not in b
True
>>> a==b
False
>>> a!=b
True
>>> len(a)
5
>>> a=set([1, 4, 3, 2, 5])
>>> a
set([1, 2, 3, 4, 5])
>>> a - b #求差集,a中有而b中无
set([1, 3, 5])
>>> #两个set比较,对各自元素的顺序无关,但是会过滤掉重复的元素
>>>
tuple操作:
>>> atuple
(1, 2, 3, 'd', 2, 3, 'n', 'd')
>>> btuple
(2, 3, 'n', 'd')
>>> cmp(btuple,btuple)
0
>>> tupleb=(2, 3, 'd', 'n')
>>> cmp(btuple,tupleb)
1
>>> cmp(tupleb,btuple)
-1
>>> #tuple比较与元素的顺序有关
>>> abtuple=atuple+btuple #组合
>>> abtuple
(1, 2, 3, 'd', 2, 3, 'n', 'd', 2, 3, 'n', 'd')
>>> aatuple=atuple*2 #复制
>>> aatuple
(1, 2, 3, 'd', 2, 3, 'n', 'd', 1, 2, 3, 'd', 2, 3, 'n', 'd')
>>> aatuple
(1, 2, 3, 'd', 2, 3, 'n', 'd', 1, 2, 3, 'd', 2, 3, 'n', 'd')
>>>
dict操作:
>>> adict={'id':1,'name':'lucy','age':23,'birth':''}
>>> bdict={'name':'lucy','id':1,'age':23,'birth':''}
>>> adict
{'age': 23, 'id': 1, 'birth': '', 'name': 'lucy'}
>>> bdict
{'age': 23, 'name': 'lucy', 'birth': '', 'id': 1}
>>> adict.keys()
['age', 'id', 'birth', 'name']
>>> bdict.keys()
['age', 'name', 'birth', 'id']
TypeError: unsupported operand type(s) for &: 'list' and 'list'
>>> adict.items()
[('age', 23), ('id', 1), ('birth', ''), ('name', 'lucy')]
>>> bdict.items()
[('age', 23), ('name', 'lucy'), ('birth', ''), ('id', 1)]
>>> adict.update(bdict)
>>> adict
{'name': 'lucy', 'age': 23, 'birth': '', 'id': 1}
>>> abdict=adict.items()+bdict.items()#组合
>>> abdict
[('name', 'lucy'), ('age', 23), ('birth', ''), ('id', 1), ('age', 23), ('name', 'lucy'), ('birth', ''), ('id', 1)]
>>> abdict=dict(abdict) #转换为字典后去除了重复的键
>>> abdict
{'age': 23, 'name': 'lucy', 'birth': '', 'id': 1}
>>> cdict={'name': 'kate', 'age': 23, 'birth': '20160909', 'id': 2}
>>> acdict=adict.items()+cdict.items()
>>> acdict
[('name', 'lucy'), ('age', 23), ('birth', '20160909'), ('id', 1), ('age', 23), ('name', 'kate'), ('birth', '20160909'), ('id', 2)]
>>> acdict=dict(acdict) #转换为字典后去除了重复的键,对于相同的键,选择最后合并进来的元素
>>> acdict
{'age': 23, 'name': 'kate', 'birth': '20160909', 'id': 2}
>>>
python两个 list 交集,并集,差集的方法+两个tuple比较操作+两个set的交集,并集,差集操作+两个dict的比较操作的更多相关文章
- python实现基于两张图片生成圆角图标效果的方法
python实现基于两张图片生成圆角图标效果的方法 这篇文章主要介绍了python实现基于两张图片生成圆角图标效果的方法,实例分析了Python使用pil模块进行图片处理的技巧,分享给大家供大家参考. ...
- 转-oracle中比较两表表结构差异和数据差异的方法
oracle中比较两表表结构差异和数据差异的方法 原作者:li2008xue2008ling 出处:http://blog.csdn.net 在工作中需要完成这么一个需求:比较两个表的表 ...
- Python学习笔记:set集合类型所有方法汇总
################################################## 集合的作用是:# 1.获得两个集合之间某种关系的集合(比如求两个集合的交集)# 2.计算集合之间的 ...
- jQuery 选择同时包含两个class的元素的实现方法
Jquery选择器 多个 class属性参照以下案例 <element class="a b good list card"> 1. 交集选择: $(".a. ...
- Python中执行系统命令常见的几种方法--转载
Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执 ...
- python之列表(list)的使用方法介绍
python之列表(list)介绍 在python的使用过程中,我们经常会用到列表,然而经常会遇到疑惑,下面我将详细介绍下列表使用方法. 一.列表 列表经常用到的功能使增.删.改和查功能. 1. 增 ...
- Python 内编写类的各种技巧和方法
Python 内编写类的各种技巧和方法 简介 有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象 ...
- Python中使用多进程来实现并行处理的方法小结
进程和线程是计算机软件领域里很重要的概念,进程和线程有区别,也有着密切的联系,先来辨析一下这两个概念: 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和 ...
- Python中日期和时间格式化输出的方法
本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...
- Python判断列表是否已排序的各种方法及其性能分析
目录 Python判断列表是否已排序的各种方法及其性能分析 声明 一. 问题提出 二. 代码实现 2.1 guess 2.2 sorted 2.3 for-loop 2.4 all 2.5 numpy ...
随机推荐
- JavaScript:表单验证模型
之前做的验证提示以弹框的形式出现太丑陋了,不符合标准的验证提示.如果要想进行更好的数据验证操作,那么必须进行一些模块化设计,通过表单样式的改变来提示.其实,一般的数据验证无非就是那么几种,例如: 大多 ...
- Android中读取短信信息
Android中读取的短信文件有 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /** * 所有的短信 */ public static final Strin ...
- Spring Boot 4 MyBatis
SpringBoot内使用MyBatis,可以不使用xml映射配置,通过注解方式映射. pom.xml添加依赖 <dependency> <groupId>org.mybati ...
- python center, ljust, rjust
例子 >>> s = "jihite" >>> s.center(, "*") '**jihite**' >>& ...
- java 部署服务报:Bad version number in .class file
问题原因:服务器jdk版本和class文件的版本不一致,一般是服务器的jdk版本低于class文件的编译版本 解决方案:修改服务器的jdk
- javascript设计模式学习之三—闭包和高阶函数
一.闭包 闭包某种程度上就是函数的内部函数,可以引用外部函数的局部变量.当外部函数退出后,如果内部函数依旧能被访问到,那么内部函数所引用的外部函数的局部变量就也没有消失,该局部变量的生存周期就被延续. ...
- 使用HttpClient抓取网站首页
HttpClient是Apache开发的第三方Java库,可以用来进行网络爬虫的开发,相关API的可以在http://hc.apache.org/httpcomponents-client-ga/ht ...
- DG - physical standby switchover切换过程
一.切换前检查1.检查备库已经全部接收到主库的redo如果是最大可用性.最大保护性模式,可以在primary端查看v$archive_dest_status,确认是否所有的redo已经传送到备库#在主 ...
- json数据传输有感
必须把object对象o给JSON.stringify(o) json字符串化 传到后台 前台js的对象某属性如果是Array 那后台就是Long[] idsArray 这种bean的属性对应 然 ...
- c++ template怎么使用及注意事项
c++ 中的template和c#的什么有点相似? 先看下定义方式: template <typename|class T> T myFunction(T param1,T param2. ...