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题:
常规的思维大致会这么写代码:
foriina: ifiinb: a.remove(i)
这么写是错误的,如果在for循环外面加一句打印语句,则会发现a变成了一个奇怪的数组:[3,4,4,5,6,7]
删倒也删了几个,但是又没有删除干净。(原因后面会讲)
那么,第1题的正确的做法是什么呢?
其实正确的做法很简洁。如下:
a=[iforiinaifinotinb]
再看第2题:
在公布第2题的答案之前,首先我们要弄清楚,为什么本文最初的一段代码是错的?原因就是,当做了a.remove(i)之后,遍历数组的游标会继续右移,然而此时因为已经remove过一个元素了,所以,游标应该保持原位置不动,而不是继续右移。知道了这个原理之后,我们就有办法来写a-b了:
importcopy c=copy.deepcopy(a) whilelen(b)>0: ifb[0]inc: c.remove(b[0]) b.remove(b[0]) else: print("Error:bisnotasubsetofa") break print(c)#c=a-b
以上这篇Python实现数组相减示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。