Python 实现数组相减示例
问题描述:
有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 中矩阵或者数组相减的法则详解
最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,label): yhat = np.array(yhat) label = np.array(label) error_sum = ((yhat - label)**2).sum() return error_sum 主要出现问题的是 yhat - label 部分,要强调的是一定要保证两者维度是相同的!这点很重要,否则就会按照python的广播机制进
-
Python 实现数组相减示例
问题描述: 有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,
-
js数组相减简单示例【删除a数组所有与b数组相同元素】
本文实例讲述了js数组相减.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <title>js数组相减</title> </head> <body> <script type="text/javascript"> function arrChange( a, b ){ for (var i = 0; i < b.length; i++) {
-
Python基于更相减损术实现求解最大公约数的方法
本文实例讲述了Python基于更相减损术实现求解最大公约数的方法.分享给大家供大家参考,具体如下: 先从网上摘录一段算法的描述如下: 更相减损法:也叫 更相减损术,是出自< 九章算术>的一种求最大公约数的算法,它原本是为 约分而设计的,但它适用于任何需要求最大公约数的场合. <九章算术>是中国古代的数学专著,其中的"更相减损术"可以用来求两个数的最大公约数,即"可半者半之,不可半者,副置分母.子之数,以少减多,更相减损,求其等也.以等数约之."
-
Python NumPy 数组索引的示例详解
目录 前言 1.访问数组元素 2.访问 2-D Arrays(数组) 3.访问 3-D Arrays(数组) 4.负索引 前言 NumPy(Numerical Python的缩写)是一个开源的Python科学计算库.使用NumPy,就可以很自然地使用数组和矩阵.NumPy包含很多实用的数学函数,涵盖线性代数运算.傅里叶变换和随机数生成等功能.本文主要介绍Python NumPy 数组索引及访问数组元素. 1.访问数组元素 数组索引与访问数组元素相同. 您可以通过引用其索引号来访问数组元素. Nu
-
Python实现两个list对应元素相减操作示例
本文实例讲述了Python实现两个list对应元素相减操作.分享给大家供大家参考,具体如下: 两个list的对应元素操作,这里以相减为例: # coding=gbk v1 = [21, 34, 45] v2 = [55, 25, 77] #v = v2 - v1 # Error: TypeError: unsupported operand type(s) for -: 'list' and 'list' v = list(map(lambda x: x[0]-x[1], zip(v2, v1)
-
Python日期的加减等操作的示例
本文介绍了Python日期的加减等操作的示例,分享给大家,也给自己留个笔记 1. 日期输出格式化 所有日期.时间的api都在datetime模块内. 1. datetime => string now = datetime.datetime.now() now.strftime('%Y-%m-%d %H:%M:%S') #输出2012-03-05 16:26:23.870105 strftime是datetime类的实例方法. 2. string => datetime t_str = '20
-
Python查找数组中数值和下标相等的元素示例【二分查找】
本文实例讲述了Python查找数组中数值和下标相等的元素.分享给大家供大家参考,具体如下: 题目描述: 假设一个单调递增的数组中的每个元素都是整数并且是唯一的.请编程实现一个函数,找出数组中任意一个数值等于其下标的元素,例如在数组[-3,-1,1,3,5]中,3和他的下标相等. 采用二分查找:如果数组中的数字小于下标,由于下标是-1的递减数列,但是数组中的元素差值大于等于-1,因此左边的不可能等于下标.如果数组中的数字大于下标,同理,之后的数字肯定都大于下标,往左边查找. 算法示例: # -*-
-
python输出数组中指定元素的所有索引示例
如下所示,代码为: array也可直接使用上面代码.测试如下: 以上这篇python输出数组中指定元素的所有索引示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
python opencv之SURF算法示例
本文介绍了python opencv之SURF算法示例,分享给大家,具体如下: 目标: SURF算法基础 opencv总SURF算法的使用 原理: 上节课使用了SIFT算法,当时这种算法效率不高,需要更快速的算法.在06年有人提出了SURF算法"加速稳定特征",从名字上来看,他是SIFT算法的加速版本. (原文) 在SIFT算法当中使用高斯差分方程(Difference of Gaussian)对高斯拉普拉斯方程( Laplacian of Gaussian)进行近似.然而,SURF使
随机推荐
- js实现的xml对象转json功能示例
- SQL SERVER 2005 最小安装经验
- 用来通知论坛有新贴子的hta代码
- VBS教程:VBScript 语句-Randomize 语句
- JAVA 18位身份证号码校验码的算法
- 未能加载文件或程序集“AspNetPager”或它的某一个依赖项。拒绝访问
- 服务器常用组件
- mysql5.1.26安装配置方法详解
- 从零开始搭建MySQL MMM架构
- 利用Vue.js实现求职在线之职位查询功能
- python实现爬虫统计学校BBS男女比例(一)
- jQuery窗口拖动功能的实现代码
- SQLSERVER语句的执行时间显示的统计结果是什么意思
- jQuery控制TR显示隐藏的三种常用方法
- jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
- jQuery实现每隔几条元素增加1条线的方法
- 一个JavaScript继承的实现
- centos 5.1下的安全设置(适合所有的linux版本)
- JS实现可改变列宽的table实例
- php验证码生成代码