本篇文章為大家展示了使用Python怎么對(duì)數(shù)組進(jìn)行相減,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
目前創(chuàng)新互聯(lián)已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、庫倫網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。問題描述:
有2個(gè)數(shù)組如下
a = [3,3,3,4,4,4,5,6,7] b = [3,3,4,4]
第1題:從數(shù)組a中刪除所有在數(shù)組b中出現(xiàn)過的元素。對(duì)于上例來說,a刪除結(jié)束應(yīng)該等于 [5, 6, 7].
第2題:實(shí)現(xiàn) c = a - b , c應(yīng)該等于[3, 4, 5, 6, 7].
先看第1題:
常規(guī)的思維大致會(huì)這么寫代碼:
for i in a: if i in b: a.remove(i)
這么寫是錯(cuò)誤的,如果在for循環(huán)外面加一句打印語句,則會(huì)發(fā)現(xiàn)a變成了一個(gè)奇怪的數(shù)組: [3, 4, 4, 5, 6, 7]
刪倒也刪了幾個(gè),但是又沒有刪除干凈。(原因后面會(huì)講)
那么,第1題的正確的做法是什么呢?
其實(shí)正確的做法很簡(jiǎn)潔。如下:
a = [i for i in a if i not in b]
再看第2題:
在公布第2題的答案之前,首先我們要弄清楚,為什么本文最初的一段代碼是錯(cuò)的?原因就是,當(dāng)做了a.remove(i)之后,遍歷數(shù)組的游標(biāo)會(huì)繼續(xù)右移,然而此時(shí)因?yàn)橐呀?jīng)remove過一個(gè)元素了,所以,游標(biāo)應(yīng)該保持原位置不動(dòng),而不是繼續(xù)右移。知道了這個(gè)原理之后,我們就有辦法來寫 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
上述內(nèi)容就是使用Python怎么對(duì)數(shù)組進(jìn)行相減,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。