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计算程序开始到程序结束的运行时间和程序运行的CPU时间
Nov 28 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
python3.6使用urllib完成下载的实例
Dec 19 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
基于python代码批量处理图片resize
Jun 04 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
Sep 04 Python
pandas 按日期范围筛选数据的实现
Feb 20 Python
django如何自定义manage.py管理命令
Apr 27 Python
Python图片检索之以图搜图
May 31 Python
Python与C++中梯度方向直方图的实现
Mar 17 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
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
javascript函数重载解决方案分享
2014/02/19 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
JavaScript实现彩虹文字效果的方法
2015/04/16 Javascript
jQuery fadeOut 异步实例代码详解
2016/08/18 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
js带闹铃功能的倒计时代码
2016/09/29 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
Element Notification通知的实现示例
2020/07/27 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
python直接访问私有属性的简单方法
2016/07/25 Python
Python实现的概率分布运算操作示例
2017/08/14 Python
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
用Python逐行分析文件方法
2019/01/28 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Python requests模块session代码实例
2020/04/14 Python
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
我的理想演讲稿
2014/04/30 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
结婚典礼致辞
2015/07/28 职场文书
2016年小学生迎国庆广播稿
2015/12/18 职场文书