Python中標準庫array數組操作舉例詳解
模塊介紹
Python 標準庫中的 array 模塊提供了一個固定類型數組類,用于高效地存儲同類型的元素。
與內置的 list 類型相比,array 更加節(jié)省內存并且能夠處理大量數據。array 主要用于數值計算和處理大規(guī)模的同類型數據。由于其內部存儲方式比列表更為緊湊,array 在某些場景下可以提高程序的性能,特別是涉及大量數值運算時。
使用場景
- 數值計算:如果需要大量存儲數值數據且元素類型相同,array 是一個不錯的選擇。它在內存中以固定大小的格式存儲數據,適合進行數值計算。
- 優(yōu)化內存:對于只需要存儲簡單數據類型(如整數或浮點數)的情況,array 比 list 更加節(jié)省內存。
- 文件操作:array 支持直接與二進制文件交互,將數據以二進制格式讀取或寫入文件,適用于大規(guī)模數據的存儲和讀取。
主要類
類 | 描述 |
---|---|
array | 用于創(chuàng)建一個固定類型的數組對象,數組元素類型一致,支持高效的內存存儲。 |
- array
參數:
- typecode:一個字符,表示數組中元素的類型。常見的類型碼有:
- b:有符號字符(byte)
- B:無符號字符
- u:Unicode字符(Python3.3已棄用)
- h:有符號短整型
- H:無符號短整型
- i:有符號整型
- I:無符號整型
- l:有符號長整型
- L:無符號長整型
- f:浮點型
- d:雙精度浮點型
- initializer:可選,用于初始化數組的內容,可以是一個列表、元組或其他可迭代對象。
import array # 創(chuàng)建一個包含整數的數組 arr_int = array.array('i', [1, 2, 3, 4, 5]) print(arr_int) # 輸出: array('i', [1, 2, 3, 4, 5]) # 創(chuàng)建一個包含浮點數的數組 arr_float = array.array('f', [1.1, 2.2, 3.3]) print(arr_float) # 輸出: array('f', [1.100000023841858, 2.200000047683716, 3.299999952316284])
主要函數
函數 | 描述 | 示例 |
---|---|---|
array.append(x) | 向數組末尾添加元素 x。 | arr.append(5) 將 5 添加到數組末尾。 |
array.insert(i, x) | 在指定索引 i 處插入元素 x。 | arr.insert(1, 10) 在索引 1 處插入 10。 |
array.remove(x) | 移除數組中第一個匹配元素 x。 | arr.remove(2) 移除第一個出現(xiàn)的 2。 |
array.pop([i]) | 移除并返回索引 i 處的元素,若未指定則默認刪除最后一個元素。 | arr.pop(1) 刪除并返回索引 1 處的元素。 |
array.extend(iter) | 向數組添加可迭代對象 iter 中的所有元素。 | arr.extend([6, 7]) 將 [6, 7] 添加到數組末尾。 |
array.reverse() | 反轉數組中的元素順序。 | arr.reverse() 反轉數組中的元素。 |
array.tofile(file) | 將數組的元素寫入到指定的文件。 | arr.tofile(f) 將數組寫入文件 f。 |
array.fromfile(file, count) | 從文件讀取 count 個元素并存入數組。 | arr.fromfile(f, 4) 從文件 f 中讀取4個元素。 |
array.index(x) | 返回數組中第一次出現(xiàn)元素 x 的索引。 | arr.index(3) 返回元素 3 的索引。 |
array.count(x) | 返回數組中元素 x 出現(xiàn)的次數。 | arr.count(3) 返回元素 3 出現(xiàn)的次數。 |
- 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) # 刪除第一個出現(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()
反轉數組
# 反轉數組 arr_int.reverse() print(arr_int) # 輸出: array('i', [6, 5, 10, 2, 1])
- count()
計算元素出現(xiàn)次數
# 計算元素出現(xiàn)次數 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])
注意事項
類型限制:array 中的元素類型必須一致,并且只能存儲基本數據類型(如整數、浮點數等)。如果需要存儲不同類型的數據,可以使用列表。
類型碼:在創(chuàng)建 array 時,必須指定一個有效的類型碼(如 ‘i’ 表示整數,‘f’ 表示浮點數)。不同類型的元素不能混合在同一個數組中。
內存優(yōu)化:array 比 list 更節(jié)省內存,特別是在處理大量數值數據時。如果只需存儲數值數據,array 是比 list 更高效的選擇。
操作效率:array 主要用于高效存儲和處理大量數據,特別適合進行數值計算和與文件的二進制交互,但不如 list 靈活,特別是在需要處理多種不同數據類型時。
不支持復雜類型:array 不支持存儲復雜的類型(如字典、列表等),只能存儲基本數據類型。
總結
Python 中的 array 模塊提供了一種高效的方式來存儲和處理同類型的數據。與 Python 列表相比,array 在內存使用上更為節(jié)省,特別適合用于數值計算、處理大量數據的場景。它通過強制元素類型一致性來保證高效存儲,但也因此限制了它的靈活性。對于需要處理大量數值數據或需要與二進制文件交互的應用,array 是一個理想的選擇。
相關文章
Python使用htpasswd實現(xiàn)基本認證授權的例子
這篇文章主要介紹了Python使用htpasswd實現(xiàn)基本認證授權的例子,服務器使用的是mini_httpd,需要的朋友可以參考下2014-06-06Python Pytorch gpu 分析環(huán)境配置
Pytorch是目前最火的深度學習框架之一,目前也支持了pytorch的GPU加速,所以我就想著,在這兩個電腦上裝個Pytorch,這篇文章主要介紹了Python Pytorch(gpu)分析環(huán)境配置,需要的朋友可以參考下2023-04-04python用10行代碼實現(xiàn)對黃色圖片的檢測功能
這篇文章主要介紹了python用10行代碼實現(xiàn)對黃色圖片的檢測功能,涉及Python基于圖片庫PIL對圖片的檢測技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08