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的绘图工具matplotlib使用实例
Jul 03 Python
python 计算两个日期相差多少个月实例代码
May 24 Python
Python爬虫实现(伪)球迷速成
Jun 10 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
python学习开发mock接口
Apr 28 Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 Python
基于python实现语音录入识别代码实例
Jan 17 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
Feb 14 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 Python
python logging模块的使用详解
Oct 23 Python
python之随机数函数的实现示例
Dec 30 Python
基于Python实现股票收益率分析
Apr 02 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
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP调用三种数据库的方法(3)
2006/10/09 PHP
php绘制一个矩形的方法
2015/01/24 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JavaScript获取网页表单提交方式的方法
2015/04/02 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
用js实现放大镜的效果的简单实例
2016/05/23 Javascript
浅谈JavaScript中变量和函数声明的提升
2016/08/09 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
canvas知识总结
2017/01/25 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
JavaScript实现淘宝京东6位数字支付密码效果
2018/08/18 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
python 字符串格式化代码
2013/03/17 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
Python面向对象编程之继承与多态详解
2018/01/16 Python
Python爬虫常用库的安装及其环境配置
2018/09/19 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
python3 enum模块的应用实例详解
2019/08/12 Python
Python assert关键字原理及实例解析
2019/12/13 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
Django返回HTML文件的实现方法
2020/09/17 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
什么是测试驱动开发(TDD)
2012/02/15 面试题
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
2015年学生管理工作总结
2015/05/26 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技