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自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
python中os和sys模块的区别与常用方法总结
Nov 14 Python
有趣的python小程序分享
Dec 05 Python
Python实现读取txt文件并转换为excel的方法示例
May 17 Python
python求最大连续子数组的和
Jul 07 Python
tensorflow更改变量的值实例
Jul 30 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
python获取本机所有IP地址的方法
Dec 26 Python
Python实现Singleton模式的方式详解
Aug 08 Python
python3.6中@property装饰器的使用方法示例
Aug 17 Python
Python使用configparser读取ini配置文件
May 25 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 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 base64编码后解码乱码的解决办法
2014/06/19 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
基于jQuery实现表单提交验证
2014/11/24 Javascript
基于jQuery实现下拉框
2014/11/24 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
深入浅出webpack之externals的使用
2017/12/04 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
layer实现登录弹框,登录成功后关闭弹框并调用父窗口的例子
2019/09/11 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
[05:20]卡尔工作室_DOTA2新手教学_DOTA2超强新手功能
2013/04/22 DOTA
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
简单介绍Python中的JSON使用
2015/04/28 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
详解python 3.6 安装json 模块(simplejson)
2019/04/02 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
python next()和iter()函数原理解析
2020/02/07 Python
Pandas时间序列:时期(period)及其算术运算详解
2020/02/25 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
2020/05/07 Python
学生宿舍管理制度
2014/01/30 职场文书
运动会通讯稿150字
2014/02/15 职场文书
大学新生军训感言
2014/02/25 职场文书
互联网电子商务专业毕业生求职信
2014/03/18 职场文书
合作协议书范本
2014/04/17 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
详解Vue的options
2021/05/15 Vue.js
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python
MySQL 1130异常,无法远程登录解决方案详解
2021/08/23 MySQL