Python語言中使用array模塊實現動態數組的操作

2020-12-11 編碼那些事

背景

對於動態數組諸如創建、插入、刪除、查詢大小等操作,在C/C++語言中,可以使用標準庫中的vector類實現,而在python語言中,也同樣提供了內置的array模塊實現類似的功能。

Python中的array類似於列表list,如都可以動態增刪元素,但又有所區別,list中存儲的元素類型可以不一樣,但array中元素類型必須完全一樣。另外,由於list中每個元素同時存儲了其地址即指針(用以標記每個元素的數據類型)和實際的數據,所以,在存儲及操作效率上,array又遠遠高於列表。

下面通過例子講解array模塊的常用操作。

動態數組的創建

創建方式為:array.array(typecode[, initializer]),第1個參數typecode定義了數組元素的類型,第2個可選參數給出了數組中的初始值。如下面的代碼創建了一個int型的包含3個元素的數組x,其初始值為分別為1、2、3。其索引方式同列表類似,下標從0開始,如x[1]代表取數組x中的第2個元素。

import array

x = array.array(『i, [1, 2, 3]

在數組的定義中,數組元素的類型通過一個字符typecode參數指定,它的取值情況如下表所示:

動態數組的常用操作

1、數組元素的增加

x.append(2)

x.extend([5, 1]

x.insert(3, 9)

其中,append在數組的末尾增加一個元素,extend在數組的末尾增加多個元素,insert(i, x)在指定位置i處增加一個元素。

2、數組元素的刪除

x.pop()

x.pop(1)

x.remove(3)

其中,pop(i)刪除第i個元素,當參數為空時,刪除最後一個元素。remove(x),刪除第一個出現的x值。

3、數組的其它操作

x.typecode #返回當前數組的元素類型

x.itemsize #返回當前數組中每個元素的字節大小

x.buffer_info() #返回包含2個元素的一個元組,第1個是數組的內存地址,第2個是數組中元素的個數

x.count(3) #統計數組中3出現的次數

x.index(3) #返回數組中3第一次出現的位置

x.byteswap() #對數組中的每個元素進行字節高、低位交換

x.reverse() #對數組中的元素逆序排列

備註

數組array模塊的操作函數同列表list類似,但是其運行及存儲效率要遠遠高於列表list,這在動態數據的採集場合是用的比較多的。這兒只給出了該模塊的一些常用操作,還有其它的一些函數,大家可以自行查看幫助,比較簡單。本文的完整例子代碼如下:

運行結果如下圖所示:

歡迎加關注,共同交流。

相關焦點

  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,在提高軟體運行效率的同時,也可以充分利用目前市面上各種第三方的DLL庫函數,以擴充Python軟體的功能及應用領域,減少重複編寫代碼、重複造輪子的工作量,這也充分體現了
  • Python使用ctypes模塊調用DLL函數之複數數組的參數傳遞
    這兒就涉及到了如何將C語言中的複數數組(Complex array)類型與Python中的數據類型進行交互的問題。在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,前面多篇文章中已經講了傳遞數值/指針/字符串參數、傳遞結構體參數、傳遞普通數組類型的例子,大家可以回看一下,這樣可以更好的理解本次要講的內容。
  • 使用C++調用python3模塊中的類/函數詳細經驗
    註:使用PyInstance_New函數實現類實例化在python3中已經是過往煙雲了。調用上述python類中的方法(以無參數輸入為例, 帶參可參考調用帶參函數方法),並獲得返回值PyObject* ret_method = PyObject_CallMethod(instance_classa, "test_m", NULL);上述調用類的方法在python模塊中的實現:# pythonclass ClassA:
  • 加速程序開發 Python整合C語言模塊
    Python是一種解釋型的,互動的,面向對象的程式語言,它包含了模塊化的操作,異常處理,動態資料形態,以及類型的使用。它的語法表達優美易讀,具有很多優秀的腳本語言的特點:解釋的,面向對象的,內建的高級數據結構,支持模塊和包,支持多種平臺,可擴展。而且它還支持交互式方式運行,圖形方式運行。它擁有眾多的編程界面支持各種作業系統平臺以及眾多的各類函數庫,利用C和C++可以對它進行擴充。
  • Fluent Python - Part2 序列構成的數組
    序列Python 使用統一的風格去處理序列數據,不管是哪種數據結構,它們都共用一套豐富的操作:迭代,切片,排序和拼接。
  • Python的武器庫05:numpy模塊(下)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以有這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • 單片機C語言中數組的用法
    數組是由具有相同類型的數據元素組成的有序集合。數組是由數組名來表示的,數組中的數據由特定的下標來唯一確定。引入數組的目的,是使用一塊連續的內存空間存儲多個類型相同的數據,以解決一批相關數據的存儲問題。數組與普通變量一樣,也必須先定義,後使用。數組在C51語言的地位舉足輕重,因此深入地了解數組是很有必要的。
  • C語言的那些小秘密之動態數組
    不管什麼情況下通通使用靜態數組的方法來解決,在當初學習C語言的時候我就是一個典型的例子,但是現在發現這是一個相當不好的習慣,甚至可能導致編寫的程序出現一些致命的錯誤。 尤其對於搞嵌入式的人來所,嵌入式系統的內存是寶貴的,內存是否高效率的使用往往意味著嵌入式設備是否高質量和高性能,所以高效的使用內存對我們來說是很重要的。那麼我們在自己編寫C語言代碼的時候就應該學會使用動態數組,這也就是我這篇博客要給大家講的,我盡我所能的用一些簡單的代碼來講解動態數組,希望我所講的對你有所幫助。
  • 如何運用PHP函數array_push()實現數組元素的增加
    如何運用PHP函數array_push()實現數組元素的增加 我們為大家介紹了如何使用PHP函數array_push()在數組的頭尾增加數據元素的方法,希望對初學PHP語言的朋友們有所幫助。
  • R語言中數組的使用
    在R語言中,可以認為數組是矩陣的擴展,它將矩陣擴展到2維以上。如果給定的數組是1維的則相當於向量,2維的相當於矩陣。R語言中的數組元素的類型也是單一的,可以是數值型,邏輯型,字符型或複數型等。數組的創建在R語言中,數組使用array()函數創建。
  • 單片機的C語言中數組的用法
    數組是由具有相同類型的數據元素組成的有序集合。數組是由數組名來表示的,數組中的數據由特定的下標來唯一確定。引入數組的目的,是使用一塊連續的內存空間存儲多個類型相同的數據,以解決一批相關數據的存儲問題。數組與普通變量一樣,也必須先定義,後使用。數組在C51語言的地位舉足輕重,因此深入地了解數組是很有必要的。
  • Python的NumPy模塊學習要點
    import arrayL=list(range(10))A=array.array('i',L)示例中的』i』是數組的類型。在實踐中,一般使用NumPy處理數組,習慣性的操作實踐是import numpy as np2.
  • Python | Numpy簡介
    Numpy簡介python標準庫中的列表(list)可以當數組用,支持動態內存分配和垃圾收集,列表元素可以是任何對象,功能強大!兩大法寶:多維數組ndarray和通用函數ufunc如何使用Numpy等python第三方軟體包?(如何開外掛?)被import的可以是通過conda或pip安裝的包,也可以是python的path中(包括當前目錄)的其它x.py文件。
  • 學好Python,必須熟練掌握的幾種數據結構【文末送書】
    當下,Python語言非常火熱,學好Python就必須掌握好這些數據結構的常用用法。python提供了多種數據結構可供選擇,除了全局的列表、字典、集合和元組4個基本類型外,collections模塊提供了一些定製化的數據結構集合類數據結構,array和heapq模塊則分別提供了數組和堆數據結構,本文就這4種類型加以分別介紹。
  • Python的武器庫04:numpy模塊(上)
    說到程式語言python,有一個著名的格言"餘生太短,只用python"。如果要分析為什麼會存在這麼一句格言?python的語法並不簡單,有複雜難懂的部分,之所以又這樣一句格言,是因為python中有很多強大的模塊,就像一個武器庫。
  • Python中json模塊的使用介紹
    # 在js語言中,一切都是對象,因此,任何支持的類型都可以通過json 來表示,例如字符串、數字、對象、數組等# 在python中,有專門處理json格式的模塊:json模塊 和 picle模塊# Json 模塊提供了四個方法:dumps、dump、loads、load# pickle 模塊也提供了四個功能:dumps、dump、loads、load
  • netcdf4-python 模塊詳解
    python中提供了多種方式來處理netcdf文件,這裡主要講一下常用的 netcdf4-python 模塊。
  • Python入門教程(二):Numpy數組基礎
    Python中的數組操作幾乎等同於Numpy數組操作,今天我們會展示用Numpy數組操作獲取數據或者子數組,對數組進行分裂,變形和連接的例子。首先,我們先介紹幾類基本的數組操作:數組的屬性確定數組的大小,形狀,儲存大小,數據類型數組的索引:獲取和設置各個元素的值數組的切分:在大的數組中獲取或設置更小的子數組
  • 從 JS 數組操作到 V8 array.js
    >「參數:」 callback:為數組中每個元素執行的函數,該函數接收一至三個參數     currentValue 數組中正在處理的當前元素     index (可選)  數組中正在處理的當前元素的索引     arr (可選)    forEach() 方法正在操作的數組
  • Python之numpy數組學習(一)
    Numpy中的多維數組稱為ndarray,它有兩個組成部分。在數組的處理過程中,原始數據不受影響,變化的只是元數據。Numpy數組通常是由相同種類的元素組成,即數組中數據類型必須一致。好處是:數組元素類型相同,可輕鬆確定存儲數組所需的空間大小。同時,numpy可運用向量化運算來處理整個數組。Numpy數組的索引從0開始。