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简单实现enum功能的方法
Apr 25 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
python字符串的方法与操作大全
Jan 30 Python
使用python批量读取word文档并整理关键信息到excel表格的实例
Nov 07 Python
pycharm 解除默认unittest模式的方法
Nov 30 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
Jun 12 Python
Python实用工具FuckIt.py介绍
Jul 02 Python
python中判断文件结束符的具体方法
Aug 04 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 Python
python dir函数快速掌握用法技巧
Dec 09 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 Python
python实战之90行代码写个猜数字游戏
Apr 22 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多线程抓取网页实现代码
2010/07/22 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
js 文件引入实现代码
2010/04/23 Javascript
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
2010/12/28 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Pycharm学习教程(4) Python解释器的相关配置
2017/05/03 Python
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
python3中类的继承以及self和super的区别详解
2019/06/26 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
pycharm开发一个简单界面和通用mvc模板(操作方法图解)
2020/05/27 Python
详细分析Python垃圾回收机制
2020/07/01 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
应聘收银员个人的求职信
2013/11/30 职场文书
金融专业求职信
2014/08/05 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
Python学习开发之图形用户界面详解
2021/08/23 Python
SSM VUE Axios详解
2021/10/05 Vue.js
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL