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字符串对象的实现
Dec 24 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Python编写一个闹钟功能
Jul 11 Python
python读取excel表格生成erlang数据
Aug 26 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python实现感知机线性分类模型示例代码
Jun 02 Python
centos7之Python3.74安装教程
Aug 15 Python
Python list运算操作代码实例解析
Jan 20 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
Python高并发和多线程有什么关系
Nov 14 Python
Python多个MP4合成视频的实现方法
Jul 16 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文件上传表单摘自drupal的代码
2011/02/15 PHP
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
该如何加载google-analytics(或其他第三方)的JS
2010/05/13 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
jQuery对象初始化的传参方式
2015/02/26 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
老生常谈javascript的类型转换
2016/10/12 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
[01:17:12]职来职往完美电竞专场
2014/09/18 DOTA
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
python装饰器常见使用方法分析
2019/06/26 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
对python中return与yield的区别详解
2020/03/12 Python
如何在scrapy中捕获并处理各种异常
2020/09/28 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
求高于平均分的学生学号及成绩
2016/09/01 面试题
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
乡文化站暑期培训方案
2014/08/28 职场文书
向雷锋同志学习倡议书
2015/04/27 职场文书