Python中標(biāo)準(zhǔn)庫(kù)array數(shù)組操作舉例詳解
模塊介紹
Python 標(biāo)準(zhǔn)庫(kù)中的 array 模塊提供了一個(gè)固定類型數(shù)組類,用于高效地存儲(chǔ)同類型的元素。
與內(nèi)置的 list 類型相比,array 更加節(jié)省內(nèi)存并且能夠處理大量數(shù)據(jù)。array 主要用于數(shù)值計(jì)算和處理大規(guī)模的同類型數(shù)據(jù)。由于其內(nèi)部存儲(chǔ)方式比列表更為緊湊,array 在某些場(chǎng)景下可以提高程序的性能,特別是涉及大量數(shù)值運(yùn)算時(shí)。
使用場(chǎng)景
- 數(shù)值計(jì)算:如果需要大量存儲(chǔ)數(shù)值數(shù)據(jù)且元素類型相同,array 是一個(gè)不錯(cuò)的選擇。它在內(nèi)存中以固定大小的格式存儲(chǔ)數(shù)據(jù),適合進(jìn)行數(shù)值計(jì)算。
- 優(yōu)化內(nèi)存:對(duì)于只需要存儲(chǔ)簡(jiǎn)單數(shù)據(jù)類型(如整數(shù)或浮點(diǎn)數(shù))的情況,array 比 list 更加節(jié)省內(nèi)存。
- 文件操作:array 支持直接與二進(jìn)制文件交互,將數(shù)據(jù)以二進(jìn)制格式讀取或?qū)懭胛募?,適用于大規(guī)模數(shù)據(jù)的存儲(chǔ)和讀取。
主要類
| 類 | 描述 |
|---|---|
| array | 用于創(chuàng)建一個(gè)固定類型的數(shù)組對(duì)象,數(shù)組元素類型一致,支持高效的內(nèi)存存儲(chǔ)。 |
- array
參數(shù):
- typecode:一個(gè)字符,表示數(shù)組中元素的類型。常見的類型碼有:
- b:有符號(hào)字符(byte)
- B:無(wú)符號(hào)字符
- u:Unicode字符(Python3.3已棄用)
- h:有符號(hào)短整型
- H:無(wú)符號(hào)短整型
- i:有符號(hào)整型
- I:無(wú)符號(hào)整型
- l:有符號(hào)長(zhǎng)整型
- L:無(wú)符號(hào)長(zhǎng)整型
- f:浮點(diǎn)型
- d:雙精度浮點(diǎn)型
- initializer:可選,用于初始化數(shù)組的內(nèi)容,可以是一個(gè)列表、元組或其他可迭代對(duì)象。
import array
# 創(chuàng)建一個(gè)包含整數(shù)的數(shù)組
arr_int = array.array('i', [1, 2, 3, 4, 5])
print(arr_int) # 輸出: array('i', [1, 2, 3, 4, 5])
# 創(chuàng)建一個(gè)包含浮點(diǎn)數(shù)的數(shù)組
arr_float = array.array('f', [1.1, 2.2, 3.3])
print(arr_float) # 輸出: array('f', [1.100000023841858, 2.200000047683716, 3.299999952316284])
主要函數(shù)
| 函數(shù) | 描述 | 示例 |
|---|---|---|
| array.append(x) | 向數(shù)組末尾添加元素 x。 | arr.append(5) 將 5 添加到數(shù)組末尾。 |
| array.insert(i, x) | 在指定索引 i 處插入元素 x。 | arr.insert(1, 10) 在索引 1 處插入 10。 |
| array.remove(x) | 移除數(shù)組中第一個(gè)匹配元素 x。 | arr.remove(2) 移除第一個(gè)出現(xiàn)的 2。 |
| array.pop([i]) | 移除并返回索引 i 處的元素,若未指定則默認(rèn)刪除最后一個(gè)元素。 | arr.pop(1) 刪除并返回索引 1 處的元素。 |
| array.extend(iter) | 向數(shù)組添加可迭代對(duì)象 iter 中的所有元素。 | arr.extend([6, 7]) 將 [6, 7] 添加到數(shù)組末尾。 |
| array.reverse() | 反轉(zhuǎn)數(shù)組中的元素順序。 | arr.reverse() 反轉(zhuǎn)數(shù)組中的元素。 |
| array.tofile(file) | 將數(shù)組的元素寫入到指定的文件。 | arr.tofile(f) 將數(shù)組寫入文件 f。 |
| array.fromfile(file, count) | 從文件讀取 count 個(gè)元素并存入數(shù)組。 | arr.fromfile(f, 4) 從文件 f 中讀取4個(gè)元素。 |
| array.index(x) | 返回?cái)?shù)組中第一次出現(xiàn)元素 x 的索引。 | arr.index(3) 返回元素 3 的索引。 |
| array.count(x) | 返回?cái)?shù)組中元素 x 出現(xiàn)的次數(shù)。 | arr.count(3) 返回元素 3 出現(xiàn)的次數(shù)。 |
- append()
追加元素
# 追加元素
arr_int.append(6)
print(arr_int) # 輸出: array('i', [1, 2, 3, 4, 5, 6])
- insert()
插入元素
# 插入元素
arr_int.insert(2, 10) # 在索引2處插入10
print(arr_int) # 輸出: array('i', [1, 2, 10, 3, 4, 5, 6])
- remove()
刪除元素
# 刪除元素
arr_int.remove(4) # 刪除第一個(gè)出現(xiàn)的4
print(arr_int) # 輸出: array('i', [1, 2, 10, 3, 5, 6])
- pop()
彈出元素
# 彈出元素
popped = arr_int.pop(3) # 彈出索引3處的元素
print(popped) # 輸出: 3
print(arr_int) # 輸出: array('i', [1, 2, 10, 5, 6])
- reverse()
反轉(zhuǎn)數(shù)組
# 反轉(zhuǎn)數(shù)組
arr_int.reverse()
print(arr_int) # 輸出: array('i', [6, 5, 10, 2, 1])
- count()
計(jì)算元素出現(xiàn)次數(shù)
# 計(jì)算元素出現(xiàn)次數(shù) print(arr_int.count(10)) # 輸出: 1
- index()
查找元素索引
# 查找元素索引 print(arr_int.index(5)) # 輸出: 1
- open()
讀寫文件
# 寫入文件
arr_int = array.array('i', [1, 2, 3, 4, 5])
with open('array_data.bin', 'wb') as f:
arr_int.tofile(f)
# 從文件讀取
arr_new = array.array('i', [0, 0, 0, 0, 0])
with open('array_data.bin', 'rb') as f:
arr_new.fromfile(f, 5)
print(arr_new) # 輸出: array('i', [1, 2, 3, 4, 5])
注意事項(xiàng)
類型限制:array 中的元素類型必須一致,并且只能存儲(chǔ)基本數(shù)據(jù)類型(如整數(shù)、浮點(diǎn)數(shù)等)。如果需要存儲(chǔ)不同類型的數(shù)據(jù),可以使用列表。
類型碼:在創(chuàng)建 array 時(shí),必須指定一個(gè)有效的類型碼(如 ‘i’ 表示整數(shù),‘f’ 表示浮點(diǎn)數(shù))。不同類型的元素不能混合在同一個(gè)數(shù)組中。
內(nèi)存優(yōu)化:array 比 list 更節(jié)省內(nèi)存,特別是在處理大量數(shù)值數(shù)據(jù)時(shí)。如果只需存儲(chǔ)數(shù)值數(shù)據(jù),array 是比 list 更高效的選擇。
操作效率:array 主要用于高效存儲(chǔ)和處理大量數(shù)據(jù),特別適合進(jìn)行數(shù)值計(jì)算和與文件的二進(jìn)制交互,但不如 list 靈活,特別是在需要處理多種不同數(shù)據(jù)類型時(shí)。
不支持復(fù)雜類型:array 不支持存儲(chǔ)復(fù)雜的類型(如字典、列表等),只能存儲(chǔ)基本數(shù)據(jù)類型。
總結(jié)
Python 中的 array 模塊提供了一種高效的方式來(lái)存儲(chǔ)和處理同類型的數(shù)據(jù)。與 Python 列表相比,array 在內(nèi)存使用上更為節(jié)省,特別適合用于數(shù)值計(jì)算、處理大量數(shù)據(jù)的場(chǎng)景。它通過(guò)強(qiáng)制元素類型一致性來(lái)保證高效存儲(chǔ),但也因此限制了它的靈活性。對(duì)于需要處理大量數(shù)值數(shù)據(jù)或需要與二進(jìn)制文件交互的應(yīng)用,array 是一個(gè)理想的選擇。
相關(guān)文章
python使用suds調(diào)用webservice接口的方法
今天小編就為大家分享一篇python使用suds調(diào)用webservice接口的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Python使用openpyxl操作Excel的高階技巧分享
在 Python 自動(dòng)化辦公的場(chǎng)景中,openpyxl 庫(kù)無(wú)疑是操作 Excel 文件的首選利器,下面我們就來(lái)看看如何結(jié)合 Python 的 decimal 模塊與 openpyxl 的高效循環(huán)技巧打造一個(gè)既精準(zhǔn)又高效的數(shù)據(jù)處理腳本吧2026-02-02
Python基礎(chǔ)之import導(dǎo)入模塊并調(diào)用其函數(shù)的完整指南
在Python編程中,import語(yǔ)句是實(shí)現(xiàn)模塊化編程的核心工具之一,本文全面介紹了Python中import語(yǔ)句的使用方法和模塊化編程的重要性,希望對(duì)大家有所幫助2026-06-06
PyCharm新建.py文件時(shí)默認(rèn)添加信息的實(shí)現(xiàn)
這篇文章主要介紹了PyCharm新建.py文件時(shí)默認(rèn)添加信息的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
flask中使用SQLAlchemy進(jìn)行輔助開發(fā)的代碼
在Web.py, Django, Flask, Tornado里,自帶的ORM功能比較缺乏,推薦大家使用SQLAlchemy來(lái)輔助開發(fā)2013-02-02

