Python數(shù)組與列表的區(qū)別解析
Python數(shù)組和列表的區(qū)別
前言
對(duì)于學(xué)習(xí)Python的同志,想要深度的去研究這個(gè)語(yǔ)言,我們首先就需要去了解一下數(shù)組和列表的區(qū)別
ndarray數(shù)組or列表?
1.創(chuàng)建方式不同
list是Python中基礎(chǔ)的數(shù)據(jù)類(lèi)型,不用引入任何庫(kù)包,直接使用[ ]創(chuàng)建即可(例如:a=[‘CSDN’,‘123’]);ndarray是NumPy函數(shù)庫(kù)中的函數(shù),在使用array時(shí)需要引入NumPy數(shù)據(jù)庫(kù):
import numpy as np # 用普通的英語(yǔ)理解這句語(yǔ)法,導(dǎo)入numpy庫(kù)當(dāng)作np,即起小名字,別號(hào) j=np.array([1,2,3,4])
2.存儲(chǔ)對(duì)象不同
列表可以存儲(chǔ)任何的對(duì)象,包括數(shù)字,字符串,數(shù)組,字典等等;而數(shù)組只能存儲(chǔ)單一的數(shù)據(jù)類(lèi)型(當(dāng)然混雜起來(lái)存儲(chǔ)也不是不行,需要修改數(shù)據(jù)類(lèi)型為object,但是這已經(jīng)違背了產(chǎn)生這個(gè)函數(shù)庫(kù)的初衷),存儲(chǔ)類(lèi)型的不同,也決定了我們應(yīng)該在什么時(shí)候用到ndarray數(shù)組亦或是列表;
實(shí)例1:
import numpy as np g=np.array(['歡迎!','這里是CSDN',123]) print(g) print(type(g[2]))
這一段代碼看似已經(jīng)不符合array數(shù)組只能存儲(chǔ)單一數(shù)據(jù)的性質(zhì),因?yàn)?23是整型數(shù)據(jù),而前面兩個(gè)元素都是字符串,其實(shí)不然,123的數(shù)據(jù)類(lèi)型已經(jīng)被它偷偷的轉(zhuǎn)換了
代碼運(yùn)行結(jié)果如下
可以看到123的數(shù)據(jù)類(lèi)型已經(jīng)被轉(zhuǎn)換成字符串的類(lèi)型
3.運(yùn)算方式不同
數(shù)組可以進(jìn)行四則運(yùn)算,它會(huì)對(duì)數(shù)組中的每一個(gè)元素對(duì)應(yīng)進(jìn)行運(yùn)算;而列表只能使用加號(hào)進(jìn)行拼接,拼接之后會(huì)形成一個(gè)新的列表:
實(shí)例2
g=['歡迎','來(lái)到'] l=['CSDN','!'] print(g+l)
運(yùn)行結(jié)果如下:
4.運(yùn)行效率不同
array數(shù)組是為了精確便捷的處理龐大的類(lèi)似的數(shù)據(jù)而產(chǎn)生的,他的存儲(chǔ)效率要比列表快著很多
實(shí)例3:
import numpy as np import datetime #datetime.datetime.now()是為了獲取當(dāng)前時(shí)間 start1=datetime.datetime.now() g=[] #創(chuàng)建一個(gè)空列表 for i in range(1,100000): #循環(huán)將1至1000000的數(shù)字添入列表中 g.append(i) end1=datetime.datetime.now() start2=datetime.datetime.now() l=np.array(g) #將z列表的數(shù)字依次復(fù)制到j(luò)數(shù)組 end2=datetime.datetime.now() print('list存儲(chǔ)時(shí)間:',end1-start1) print('數(shù)組存儲(chǔ)時(shí)間:',end2-start2)
代碼運(yùn)行結(jié)果如下:
一般array存儲(chǔ)數(shù)據(jù)的速度比列表存儲(chǔ)數(shù)據(jù)的速度快,這一點(diǎn)尤其體現(xiàn)在多而重復(fù)的數(shù)據(jù)處理上,大家可以去Python中嘗試一下
總結(jié):數(shù)組和列表的運(yùn)用
1.列表因?yàn)槠浯鎯?chǔ)的類(lèi)型可以是任何對(duì)象,因此列表的用處更廣泛,更多樣化,并且列表可以有更多的存儲(chǔ)空間去使用,而數(shù)組使用的空間就相對(duì)較少
2.列表多樣化也不一定是好處,因?yàn)榱斜泶鎯?chǔ)的方式和存儲(chǔ)類(lèi)型雜亂,導(dǎo)致在處理一些龐大重復(fù)的數(shù)據(jù)時(shí)占據(jù)的資源太多
3.ndarray數(shù)組和列表處理數(shù)據(jù)的時(shí)間對(duì)于我們來(lái)說(shuō)只是一眨眼的事情,但是對(duì)于計(jì)算機(jī)來(lái)說(shuō)卻不可忽略,尤其在進(jìn)行大量數(shù)據(jù)處理時(shí),數(shù)組和列表處理數(shù)據(jù)的時(shí)間差別會(huì)更明顯
4.在計(jì)算機(jī)編程中,我們一般要求代碼簡(jiǎn)潔,快速,并且占用的運(yùn)行資源少,因此就誕生了NumPy函數(shù)庫(kù),用于更加精確便捷的科學(xué)計(jì)算
到此這篇關(guān)于Python數(shù)組與列表的區(qū)別的文章就介紹到這了,更多相關(guān)Python數(shù)組與列表區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 同時(shí)運(yùn)行多個(gè)程序的實(shí)例
今天小編就為大家分享一篇python 同時(shí)運(yùn)行多個(gè)程序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python如何實(shí)現(xiàn)對(duì).xls文件表頭的修改
這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)對(duì).xls文件表頭的修改功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-03-03python中使用urllib2偽造HTTP報(bào)頭的2個(gè)方法
這篇文章主要介紹了python中使用urllib2偽造HTTP報(bào)頭的2個(gè)方法,即偽造http頭信息,需要的朋友可以參考下2014-07-07Python中的多線(xiàn)程實(shí)例(簡(jiǎn)單易懂)
這篇文章主要介紹了Python中的多線(xiàn)程實(shí)例,一個(gè)CPU,將時(shí)間切成一片一片的,CPU輪轉(zhuǎn)著去處理一件一件的事情,到了規(guī)定的時(shí)間片就處理下一件事情,更多的相關(guān)內(nèi)容需要的小伙伴可以參考下面文章詳細(xì)2022-06-06python實(shí)現(xiàn)宿舍管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)宿舍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11