Python 實(shí)現(xiàn)數(shù)組相減示例
問(wèn)題描述:
有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)過(guò)的元素。對(duì)于上例來(lái)說(shuō),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)外面加一句打印語(yǔ)句,則會(huì)發(fā)現(xiàn)a變成了一個(gè)奇怪的數(shù)組: [3, 4, 4, 5, 6, 7]
刪倒也刪了幾個(gè),但是又沒(méi)有刪除干凈。(原因后面會(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過(guò)一個(gè)元素了,所以,游標(biāo)應(yīng)該保持原位置不動(dòng),而不是繼續(xù)右移。知道了這個(gè)原理之后,我們就有辦法來(lái)寫 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 實(shí)現(xiàn)數(shù)組相減示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)自定義順序、排列寫入數(shù)據(jù)到Excel的方法
這篇文章主要介紹了Python實(shí)現(xiàn)自定義順序、排列寫入數(shù)據(jù)到Excel的方法,涉及Python針對(duì)Excel文件的數(shù)據(jù)處理及讀寫相關(guān)操作技巧,需要的朋友可以參考下2018-04-04Python寫一個(gè)簡(jiǎn)單上課點(diǎn)名系統(tǒng)(附源碼)
這篇文章主要介紹了Python寫一個(gè)簡(jiǎn)單上課點(diǎn)名系統(tǒng),文章圍繞Python得性概念資料寫一個(gè)簡(jiǎn)的得上課點(diǎn)名系統(tǒng),并附上詳細(xì)的代碼即過(guò)程總結(jié),需要的朋友可以參考一下,希望對(duì)你有所幫助2021-11-11Flask框架的學(xué)習(xí)指南之開(kāi)發(fā)環(huán)境搭建
本文是Flask框架的學(xué)習(xí)指南系列文章的第一篇,主要給大家講述的是開(kāi)發(fā)環(huán)境的搭建工作,有需要的小伙伴可以參考下2016-11-11Python標(biāo)準(zhǔn)模塊--ContextManager上下文管理器的具體用法
本篇文章主要介紹了Python標(biāo)準(zhǔn)模塊--ContextManager的具體用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11如何優(yōu)雅地處理Django中的favicon.ico圖標(biāo)詳解
默認(rèn)情況下,瀏覽器訪問(wèn)一個(gè)網(wǎng)站的時(shí)候,同時(shí)還會(huì)向服務(wù)器請(qǐng)求"/favicon.ico"這個(gè)URL,目的是獲取網(wǎng)站的圖標(biāo),下面這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅地處理Django中favicon.ico圖標(biāo)的相關(guān)資料,需要的朋友可以參考下2018-07-07弄懂這56個(gè)Python使用技巧(輕松掌握Python高效開(kāi)發(fā))
這篇文章主要介紹了弄懂這56個(gè)Python使用技巧(輕松掌握Python高效開(kāi)發(fā)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-09-09