Python 实现数组相减示例


Posted in Python onDecember 27, 2019

问题描述:

有2个数组如下

a = [3,3,3,4,4,4,5,6,7]
b = [3,3,4,4]

第1题:从数组a中删除所有在数组b中出现过的元素。对于上例来说,a删除结束应该等于 [5, 6, 7].

第2题:实现 c = a - b , c应该等于[3, 4, 5, 6, 7].

先看第1题:

常规的思维大致会这么写代码:

for i in a:
 if i in b:
  a.remove(i)

这么写是错误的,如果在for循环外面加一句打印语句,则会发现a变成了一个奇怪的数组: [3, 4, 4, 5, 6, 7]

删倒也删了几个,但是又没有删除干净。(原因后面会讲)

那么,第1题的正确的做法是什么呢?

其实正确的做法很简洁。如下:

a = [i for i in a if i not in b]

再看第2题:

在公布第2题的答案之前,首先我们要弄清楚,为什么本文最初的一段代码是错的?原因就是,当做了a.remove(i)之后,遍历数组的游标会继续右移,然而此时因为已经remove过一个元素了,所以,游标应该保持原位置不动,而不是继续右移。知道了这个原理之后,我们就有办法来写 a - b 了:

import copy

c = copy.deepcopy(a)
while len(b) > 0:
 if b[0] in c:
  c.remove(b[0])
  b.remove(b[0])
 else:
  print("Error: b is not a sub set of a")
  break

print(c) # c = a - b

以上这篇Python 实现数组相减示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
Sep 18 Python
详解tensorflow实现迁移学习实例
Feb 10 Python
python基础教程项目三之万能的XML
Apr 02 Python
Python中xml和json格式相互转换操作示例
Dec 05 Python
python匹配两个短语之间的字符实例
Dec 25 Python
pip安装py_zipkin时提示的SSL问题对应
Dec 29 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
tensorflow使用CNN分析mnist手写体数字数据集
Jun 17 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
python实现学生通讯录管理系统
Feb 25 Python
详解Django中的FBV和CBV对比分析
Mar 01 Python
Pandas 解决dataframe的一列进行向下顺移问题
Dec 27 #Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 #Python
pandas的相关系数与协方差实例
Dec 27 #Python
详解opencv中画圆circle函数和椭圆ellipse函数
Dec 27 #Python
如何更改 pandas dataframe 中两列的位置
Dec 27 #Python
使用OpenCV circle函数图像上画圆的示例代码
Dec 27 #Python
python的slice notation的特殊用法详解
Dec 27 #Python
You might like
两个强悍的php 图像处理类1
2009/06/15 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
firefo xml 读写实现js代码
2009/06/11 Javascript
Extjs Ext.MessageBox.confirm 确认对话框详解
2010/04/02 Javascript
jquery修改网页背景颜色通过css方法实现
2014/06/06 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
python 爬取微信文章
2016/01/30 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
python多进程重复加载的解决方式
2019/12/13 Python
解决Tensorflow sess.run导致的内存溢出问题
2020/02/05 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
浅谈Python协程
2020/06/17 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
python中slice参数过长的处理方法及实例
2020/12/15 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
希尔顿酒店中国网站:Hilton中国
2017/03/11 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
澳大利亚领先的男装零售连锁店:Lowes
2020/08/07 全球购物
自荐信格式技巧有哪些呢
2013/11/19 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
专题民主生活会对照检查材料思想汇报
2014/09/29 职场文书
教师批评与自我批评材料
2014/10/16 职场文书
素质教育培训心得体会
2016/01/19 职场文书
高一语文教学反思
2016/02/16 职场文书
《穷人》教学反思
2016/02/19 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技