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的内存泄漏及gc模块的使用分析
Jul 16 Python
python实现将pvr格式转换成pvr.ccz的方法
Apr 28 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
python批量获取html内body内容的实例
Jan 02 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
Apr 10 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
如何解决安装python3.6.1失败
Jul 01 Python
python实现KNN近邻算法
Dec 30 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类
2006/07/15 PHP
第八节--访问方式
2006/11/16 PHP
PHP 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
PHP实现变色验证码实例
2014/01/06 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
浅谈PHP封装CURL
2019/03/06 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
shiro授权的实现原理
2017/09/21 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
详解webpack babel的配置
2018/01/09 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
PyTorch基本数据类型(一)
2019/05/22 Python
python 实现字符串下标的输出功能
2020/02/13 Python
python让函数不返回结果的方法
2020/06/22 Python
python re模块常见用法例举
2021/03/01 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
大学毕业生简单自荐信
2013/11/05 职场文书
中专毕业生自荐信
2013/11/16 职场文书
学术会议欢迎词
2014/01/09 职场文书
2014年社区植树节活动方案
2014/02/28 职场文书
党课培训心得体会
2014/09/02 职场文书
离职报告范文
2014/11/04 职场文书
企业工会工作总结2015
2015/05/13 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang