Python中实现对list做减法操作介绍


Posted in Python onJanuary 09, 2015

问题描述:假设我有这样两个list,

          一个是list1,list1 = [1, 2, 3, 4, 5]
          一个是list2,list2 = [1, 4, 5]
          我们如何得到一个新的list,list3,
          list3中包括所有不在list2中出现的list1中的元素。
          即:list3 = list1 ? list2
         
解决方案:我们可以用set(集合)操作
          list3 = list(set(list1) ? set(list2))
         
          set操作会将一个list转换成一个集合。
          假设:list_t = [1, 2, 3, 1]
          那么:list(set(list_t)) = [1, 2, 3]
          是的,重复的项会被删除。

其他方案:list3 = [i for i in list1 if i not in list2]       #可用于list分片
          这样写也很直观。
          但是在list很大的时候,没有set方法快。

额外知识:a = [[i,j] for i in range(2) for j in range(3)]
          这个和“其他方案”非常相似,
          都是在[]里面进行判断和计算。
          感觉很方便,至少比下面这样要方便、要快:
          a = []
          for i in range(2):
              for j in range(3):
                  a.append([i,j])

某些问题:如果list_tmp = [[1,2],[2,3]]
          即list里面不是单独的元素组成,而是list,
          那么set(list_tmp)会出问题。

还要研究:hash函数

Python 相关文章推荐
Python入门篇之列表和元组
Oct 17 Python
Python中pip安装非PyPI官网第三方库的方法
Jun 02 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
Django框架实现的分页demo示例
May 25 Python
django fernet fields字段加密实践详解
Aug 12 Python
python解释器spython使用及原理解析
Aug 24 Python
关于Python-faker的函数效果一览
Nov 28 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
通过实例解析python创建进程常用方法
Jun 19 Python
python base64 decode incorrect padding错误解决方法
Jan 08 #Python
Python中字符编码简介、方法及使用建议
Jan 08 #Python
Python实现一个简单的MySQL类
Jan 07 #Python
python实现多线程暴力破解登陆路由器功能代码分享
Jan 04 #Python
Python中对列表排序实例
Jan 04 #Python
Python实现爬取知乎神回复简单爬虫代码分享
Jan 04 #Python
Python连接mssql数据库编码问题解决方法
Jan 01 #Python
You might like
mysql中存储过程、函数的一些问题
2007/02/14 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
php session处理的定制
2009/03/16 PHP
Yii2中datetime类的使用
2016/12/17 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
通过点击jqgrid表格弹出需要的表格数据
2015/12/02 Javascript
用js实现简单算法的实例代码
2016/09/24 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
vue-resource拦截器设置头信息的实例
2017/10/27 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
django序列化serializers过程解析
2019/12/14 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
Python 列表反转显示的四种方法
2020/11/16 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
大学学年自我鉴定
2013/10/28 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
出纳试用期自我评价
2015/03/10 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android
SQL中的连接查询详解
2022/06/21 SQL Server