网络编程
位置:首页>> 网络编程>> Python编程>> Python 实现数组相减示例

Python 实现数组相减示例

作者:执假以为真  发布时间:2021-08-19 07:01:52 

标签: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

来源:https://blog.csdn.net/nirendao/article/details/79436061

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com