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编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
python+pandas生成指定日期和重采样的方法
Apr 11 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
pycharm 主题theme设置调整仿sublime的方法
May 23 Python
python 将md5转为16字节的方法
May 29 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
Pandas之Fillna填充缺失数据的方法
Jun 25 Python
python and or用法详解
Jun 26 Python
python基于socket实现的UDP及TCP通讯功能示例
Nov 01 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
Python用dilb提取照片上人脸的示例
Oct 26 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/10/09 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
jquery插件bxslider用法实例分析
2015/04/16 Javascript
jquery滚动特效集锦
2015/06/03 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[01:42]DOTA2 – 虚无之灵
2019/08/25 DOTA
Python的面向对象思想分析
2015/01/14 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
Window10下python3.7 安装与卸载教程图解
2019/09/30 Python
QML实现钟表效果
2020/06/02 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
2021/03/02 Python
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
个性车贴标语
2014/06/24 职场文书
学风建设演讲稿
2014/09/12 职场文书
公民代理授权委托书
2014/09/24 职场文书
结婚典礼致辞
2015/07/28 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
总结Java对象被序列化的两种方法
2021/06/30 Java/Android
Sql Server之数据类型详解
2022/02/28 SQL Server