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 相关文章推荐
在Django的模型中执行原始SQL查询的方法
Jul 21 Python
python 文件操作api(文件操作函数)
Aug 28 Python
python实现简易版计算器
Jun 22 Python
Python学习小技巧总结
Jun 10 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
Python3爬虫学习入门教程
Dec 11 Python
python 实现检验33品种数据是否是正态分布
Dec 09 Python
Python3 中作为一等对象的函数解析
Dec 11 Python
python实现飞机大战项目
Mar 11 Python
python logging.info在终端没输出的解决
May 12 Python
python中取绝对值简单方法总结
Jul 24 Python
Python pathlib模块使用方法及实例解析
Oct 05 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
CURL状态码列表(详细)
2013/06/27 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
详解nodejs 文本操作模块-fs模块(四)
2016/12/22 NodeJs
jQuery简单实现MD5加密的方法
2017/03/03 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
js实现缓动动画
2020/11/25 Javascript
[01:10:57]Liquid vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
python同义词替换的实现(jieba分词)
2020/01/21 Python
python爬虫搭配起Bilibili唧唧的流程分析
2020/12/01 Python
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
求职意向书范文
2014/04/01 职场文书
会议室标语
2014/06/21 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
长征观后感
2015/06/09 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
分析并发编程之LongAdder原理
2021/06/29 Java/Android
opencv用VS2013调试时用Image Watch插件查看图片
2021/07/26 Python
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL