您好,登錄后才能下訂單哦!
本篇文章為大家展示了使用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怎么對數組進行相減,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。