日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Python内置库:array(简单数组)

發(fā)布時間:2023/12/29 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 Python内置库:array(简单数组) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

array模塊提供了一種數(shù)組概念上的緊湊類型的實(shí)現(xiàn),數(shù)組中的元素必須為同一類型,且為基礎(chǔ)數(shù)據(jù)類型(字符、整數(shù)或浮點(diǎn)數(shù)),這些元素在內(nèi)存中是按固定大小(字節(jié))連續(xù)存儲的,相比于列表和元組類型,array模塊的實(shí)現(xiàn)更加節(jié)省內(nèi)存。但是注意,使用的時候還是需要根據(jù)實(shí)際情況來看,因?yàn)镻ython對于數(shù)字、字符串等基礎(chǔ)數(shù)據(jù)類型也是做了優(yōu)化的,不一定array模塊就更節(jié)省內(nèi)存。

>>> import sys
>>> import array
>>> num = 100000
>>> lst = list(i for i in range(num))
>>> sys.getsizeof(lst)
879840
>>> a = array.array('i', lst)  # i表示數(shù)組中元素的類型,具體支持的類型見下面的表格
>>> a.itemsize  # 每個元素占用的內(nèi)存大小,這里為4byte
4
>>> sys.getsizeof(a)  # 可以看到,總的大小為400064=4*num+64,比list類型少了一半多
400064

array支持的數(shù)據(jù)類型(Type code為array.array的第一個參數(shù))

Type code C Type Python Type Minimun size in bytes
'b' signed char int 1
'B' unsigned char int 1
'u' wchar_t Unicode character 2
'h' signed short int 2
'H' unsigned short int 2
'i' signed int int 2
'I' unsigned int int 2
'l' signed long int 4
'L' unsigned long int 4
'q' signed long long int 8
'Q' unsigned long long int 8
'f' float float 4
'd' double float 8

注:array('u')可能是16位或者32位,這取決于運(yùn)行的系統(tǒng)。并且在Python3.9之后將棄用之前的Py_UNICODE,而使用現(xiàn)在的wchar_t,但是不影響以前Py_UNICODE的使用,因?yàn)镻y_UNICODE只是wchar_t的別名。但是會在Python4.0中棄用Py_UNICODE。

array類

array.array(typecode[, initializer]):使用typecode參數(shù)創(chuàng)建一個array對象,也可以使用initializer參數(shù)初始化一個array對象,initializer必須是一個列表、bytes-like對象或者一個可迭代的對象,不過需要注意這些對象中的元素需要和上面表格中的Python Type匹配。array對象也支持索引、切片、拼接等操作,不過前提是操作的對象的typecode都是同一種類型。
常用的方法和屬性:

typecode:array對象的typecode屬性。
itemsize:array對象中元素占用的內(nèi)存大小,單位是byte。
append(x):在array對象的末尾添加一個元素x。
buffer_info():返回一個元組(address, length),address是array對象的內(nèi)存地址,length是array對象中元素的個數(shù)。可以使用array.buffer_info()[1] * array.itemsize計算出array對象的字節(jié)數(shù)。
count(x):統(tǒng)計x在array對象中出現(xiàn)的次數(shù)。
extend(iterable):將另一個可迭代對象中的元素添加到當(dāng)前array對象的末尾,需要注意,可迭代對象的元素類型需要和當(dāng)前array對象的元素類型匹配,否則會引發(fā)TypeError。
frombytes(s):將一個字符串當(dāng)做array對象,并將其中的元素添加到當(dāng)前array對象中(就像使用fromfile(f, n)從文件中讀取出來的字符串)。(Python3.2更新:fromstring()被重命名為frombytes())。
fromfile(f, n):從文件對象中讀取n項(xiàng),添加到當(dāng)前array對象的末尾。注意,如果n超出了文件對象本身具有的item數(shù)量,則會拋出EOFError,不過文件對象中的item依然會被添加到array對象中。
fromlist(list):從將一個列表中的元素添加到當(dāng)前array對象中,如果列表中的元素類型與array對象不匹配,則會拋出異常,不過此時array對象不會被改變。
fromunicode(s):將一個Unicode字符串中的字符添加到當(dāng)前array對象中,不過此時array對象必須是'u'類型,如果s是其他類型,可以使用array.frombytes(unicodestring.encode(enc))
index(x):返回x在array中的第一個索引。
insert(i, x):在位置i前插入值x,i允許為負(fù)值。
pop([i]):從array數(shù)組中刪除并返回索引為i的值,i默認(rèn)為-1。
remove(x):從array中移除第一個找到的值x。
reverse():反轉(zhuǎn)array中元素的順序。
tobytes():將array轉(zhuǎn)換為bytes()數(shù)組。(Python3.2更新:tostring()被重命名為tobytes())
tofile(f):將array對象所有元素寫入文件。
tolist():將array對象轉(zhuǎn)換為list對象。
tounicode():將array對象轉(zhuǎn)換為Unicode字符串,注意,此時array對象必須是'u'類型,如果是其他類型,可以使用array.tobytes().decode(enc)來獲取一個Unicode字符串。

總結(jié)

以上是生活随笔為你收集整理的Python内置库:array(简单数组)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。