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的迭代器和生成器使用实例
Jan 14 Python
10款最好的Web开发的 Python 框架
Mar 18 Python
简单介绍Python的轻便web框架Bottle
Apr 08 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
python+Django+apache的配置方法详解
Jun 01 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
Python 如何安装Selenium
May 06 Python
django学习之ajax post传参的2种格式实例
May 14 Python
Python List remove()实例用法详解
Aug 02 Python
Python使用pandas导入xlsx格式的excel文件内容操作代码
Dec 24 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仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
前淘宝前端开发工程师阿当的PPT中有JS技术理念问题
2010/01/15 Javascript
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
jQuery+ajax读取并解析XML文件的方法
2016/09/09 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
JavaScript使用localStorage存储数据
2019/09/25 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
python调用cmd命令行制作刷博器
2014/01/13 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
python同步windows和linux文件
2019/08/29 Python
python模块导入的方法
2019/10/24 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
Sony C++笔试题
2013/03/10 面试题
毕业生医学检验求职信
2013/10/16 职场文书
经销商培训邀请函
2014/01/21 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
家长学校教学计划
2015/01/19 职场文书
总账会计岗位职责
2015/04/02 职场文书
表扬信格式模板
2015/05/05 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
大学生十八大感想
2015/08/11 职场文书
2019大学生预备党员转正思想汇报
2019/06/21 职场文书
python pygame入门教程
2021/06/01 Python
python 对图片进行简单的处理
2021/06/23 Python
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏