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中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
在pycharm中使用git版本管理以及同步github的方法
Jan 16 Python
在python里从协程返回一个值的示例
Feb 19 Python
Python使用修饰器进行异常日志记录操作示例
Mar 19 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
Django Form常用功能及代码示例
Oct 13 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
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
PHP SQLite类
2009/05/07 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
初识php MVC
2014/09/10 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
gearman中任务的优先级和返回状态实例分析
2020/02/27 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
读jQuery之十四 (触发事件核心方法)
2011/08/23 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
2015/03/11 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
JS实现图片剪裁并预览效果
2016/08/12 Javascript
用npm-run实现自动化任务的方法示例
2019/01/14 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
python获取元素在数组中索引号的方法
2015/07/15 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
解决Python3 被PHP程序调用执行返回乱码的问题
2019/02/16 Python
使用python实现kNN分类算法
2019/10/16 Python
pycharm安装及如何导入numpy
2020/04/03 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
中西医结合临床医学专业大学生自荐信
2013/09/28 职场文书
物流管理应届生求职信
2013/11/07 职场文书
校本教研工作制度
2014/01/22 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL