python 中对list做减法操作
问题描述:假设我有这样两个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 中对list做减法操作的更多相关文章
- Python中实现对list做减法操作介绍
Python中实现对list做减法操作介绍 这篇文章主要介绍了Python中实现对list做减法操作介绍,需要的朋友可以参考下 问题描述:假设我有这样两个list, 一个是list1,list1 = ...
- Python中的文件和目录操作实现
Python中的文件和目录操作实现 对于文件和目录的处理,虽然可以通过操作系统命令来完成,但是Python语言为了便于开发人员以编程的方式处理相关工作,提供了许多处理文件和目录的内置函数.重要的是,这 ...
- Python中json的简单读写操作
Python中json的简单读写操作 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
- Python中关于csv的简单操作
Python中关于csv的简单操作 CSV操作简单,直接import csv即可, 主要使用reader和pandas 1 reader的简单使用 csv.reader("1.csv&quo ...
- Python 中包/模块的 `import` 操作
版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...
- 【Python从入门到精通】(九)Python中字符串的各种骚操作你已经烂熟于心了么?
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文将重点介绍Python字符串的各种常用方法,字符串是实际开发中经常用到的,所有熟练的掌握它的各种用法显得尤为重要. 干货满满,建议收藏,欢迎大 ...
- Python 中的类的相关操作
构造函数 构造函数是任何类都有的特殊方法.当要创建一个类时,就要调用构造函数.他的名字是__init__.init的前后分别是两个下划线.时间类Time的构造函数如下: >>> cl ...
- python中 对文件的读写操作 以及如何边写入 边保存flush()
转自:https://blog.csdn.net/t8116189520/article/details/78854708 首先 python中打开文件大致常用的几类如下: 1.写入文件write # ...
- python中list不能做索引
先看python中内置的list不能作为字典的key. 可将list或者ndarray转化为tuple再做索引. list不能进行hash: import numpy as np a1 = np.ar ...
随机推荐
- Android开发之Intent的传值--Application
每当我们想要将输入的值传递到多个界面时,只是使用Intent传值的话,就会有一些的弊端. 下面我就以三个页面为例,进行简单的说明一下: 思路: 1.第一个页面是客户输入相关的信息. 2.将客户输入的信 ...
- 关于Java安全的书
关于Java安全的书http://automationqa.com/forum.php?mod=viewthread&tid=2831&fromuid=21
- DES加密系统的实现
这是一个高内聚低耦合可复用的DES加密系统的实现. Github 链接:https://github.com/cyendra/CyDES 要实现加密系统,先考虑数据的基本单位. 在DES加密中,数据是 ...
- 深入Windows窗体原理及控件重绘技巧
之前有学MFC的同学告诉我觉得Windows的控件重绘难以理解,就算重绘成功了还是有些地方不明白,我觉得可能很多人都有这样的问题,在这里我从Windows窗体的最基本原理来讲解,如果你有类似的疑惑希望 ...
- C#Combobox显示名称保存代码
private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Columns.Add ...
- 一个java文件编译之后会产生多个class文件
如图所示:如果编译后一个java文件中类有内部类的话,就会编译产生多个类
- 使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能
转自http://jeffblog.sinaapp.com/archives/501 首先我们先下载一个文件GetSummery,这里我提供了,大家可以直接下载:下载 我们在数据库建立一个表,并给表中 ...
- 自定义控件学习 Day44
自定义控件学习 Day44 onMeasure 测量控件的宽高. onLayout 设置位置 onDarw 绘制控件 问题堆栈 1. 事件监听传递 最外层获取到控件,根据事件事件传递机制,返回值fal ...
- kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)
这个实验主要思想是在创建数据库表的时候, 通过增加一个额外的字段,也就是时间戳字段, 例如在同步表 tt1 和表 tt2 的时候, 通过检查那个表是最新更新的,那个表就作为新表,而另外的表最为旧表被新 ...
- TMemIniFile 与TIniFile 区别
在uses 申明 Inifiles MyStream:TMemIniFile; MyStream:=TMemIniFile.Create('c:\proxy.ini'); memo1.Text:=My ...