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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
Python实现将xml导入至excel
Nov 20 Python
Python多进程分块读取超大文件的方法
Apr 13 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
django实现前后台交互实例
Aug 07 Python
django框架ModelForm组件用法详解
Dec 11 Python
django使用JWT保存用户登录信息
Apr 22 Python
Python-openCV开运算实例
Jul 05 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 Python
python文件路径操作方法总结
Dec 21 Python
python中if嵌套命令实例讲解
Feb 25 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
8个PHP数组面试题
2015/06/23 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
thinkphp自带验证码全面解析
2016/09/18 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
JavaScript下利用fso判断文件是否存在的代码
2010/12/11 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
JS动态改变表格边框宽度的方法
2015/03/31 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
jQuery调用WebMethod(PageMethod) NET2.0的方法
2016/04/15 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
ES6中的rest参数与扩展运算符详解
2017/07/18 Javascript
微信小程序实现下载进度条的方法
2017/12/08 Javascript
vue filters的使用详解
2018/06/11 Javascript
微信小程序实现图片上传放大预览删除代码
2020/06/28 Javascript
基于Vue 实现一个中规中矩loading组件
2019/04/03 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Python实现利用163邮箱远程关电脑脚本
2018/02/22 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
HTML5新增加的功能详解
2016/09/05 HTML / CSS
关于递归的一道.NET面试题
2013/05/12 面试题
广告学专业毕业生自荐信
2014/05/28 职场文书
初中班主任教育随笔
2015/08/15 职场文书
MySQL 数据库范式化设计理论
2022/04/22 MySQL