Python 实现数组相减示例
作者:执假以为真 时间:2021-08-19 07:01:52
问题描述:
有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
来源:https://blog.csdn.net/nirendao/article/details/79436061
标签:Python,数组,相减
0
投稿
猜你喜欢
浅谈慢SQL优化之索引的作用
2024-01-24 20:31:54
Python版中国省市经纬度
2021-05-10 20:25:12
向数据库中插入数据并返回当前插入的行数及全局变量@@IDENTITY应用
2024-01-13 05:11:00
Python参数解析模块sys、getopt、argparse使用与对比分析
2021-12-19 17:39:58
Mysql误删数据解决方案及kill语句原理
2024-01-26 20:22:15
3个适合新手练习的python小游戏
2023-08-02 02:12:27
Golang实现字符串倒序的几种解决方案
2024-01-30 20:01:37
Python OpenCV招商银行信用卡卡号识别的方法
2022-01-16 06:31:30
详解CentOS升级Python2.6到Python2.7并安装pip
2023-06-13 18:59:45
js is_valid_filename验证文件名的函数
2024-04-23 09:12:05
简单谈谈MySQL优化利器-慢查询
2024-01-28 02:30:33
JavaScript中随机数方法 Math.random()
2024-04-10 13:56:30
VMWare 虚拟机Centos7安装Oracle数据库的教程图解
2024-01-13 22:00:24
在TABLE中模仿excel的单元格移动
2007-12-22 12:03:00
Python 实现图像特效中的油画效果
2021-04-10 18:29:49
你们要的Python绘画3D太阳系详细代码
2021-05-12 09:32:48
基于Python编写一个刷题练习系统
2022-10-01 13:28:34
详解如何用Python实现感知器算法
2023-11-02 13:32:20
Pandas替换及部分替换(replace)实现流程详解
2023-11-04 02:58:38
Python Serial串口基本操作(收发数据)
2022-04-17 09:54:07