在本文中,您將學習Python數組,數組和列表之間的區(qū)別,以及如何以及何時使用示例來使用它們。
數組在Java,C / C ++,JavaScript等大多數編程語言中都很流行。但是,在Python中,它們并不常見。人們經常談論Python數組時,他們談論的是Python列表。如果您如果不知道什么是列表,則絕對應該查看Python列表文章。
我們可以將列表視為數組。但是,我們不能限制列表中存儲的元素的類型。例如:
a = [1, 3.5, "Hello"]
如果使用array模塊創(chuàng)建數組 ,則數組的所有元素必須為相同的數字類型。
import array as arr a = arr.array('d', [1, 3.5, "Hello"]) // Error
您可能從上面的示例中猜到了,我們需要導入array模塊以創(chuàng)建數組。例如:
import array as arr a = arr.array('d', [1.1, 3.5, 4.5]) print(a)
在這里,我們創(chuàng)建了一個float類型數組。字母'd'是類型代碼。這確定了創(chuàng)建過程中數組的類型。
常用的類型代碼:
Code | C 類型 | Python 類型 | 最小字節(jié) |
---|---|---|---|
'b' | signed char | int | 1 |
'B' | unsigned char | int | 1 |
'u' | Py_UNICODE | Unicode | 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 |
'f' | float | float | 4 |
'd' | double | float | 8 |
我們將不在本文中討論不同的C類型。在整篇文章中,我們將使用兩種類型代碼:'i'整數和'd'浮點數。
注意:'u'自版本3.3起,不推薦使用Unicode字符的類型代碼。盡可能避免使用它。
我們使用索引來訪問數組的元素:
import array as arr a = arr.array('i', [2, 4, 6, 8]) print("第一個元素:", a[0]) print("第二個元素:", a[1]) print("最后一個元素:", a[-1])
請記住,索引從0(而不是1)開始,類似于列表。
我們可以使用切片運算符訪問數組中的一系列項目:。
import array as arr numbers_list = [2, 5, 62, 5, 42, 52, 48, 5] numbers_array = arr.array('i', numbers_list) print(numbers_array[2:5]) # 第3-第5個元素 print(numbers_array[:-5]) # 從開始到第4個元素 print(numbers_array[5:]) # 從第6個元素到末尾 print(numbers_array[:]) # 從開始到末尾
運行該程序時,輸出為:
array('i', [62, 5, 42]) array('i', [2, 5, 62]) array('i', [52, 48, 5]) array('i', [2, 5, 62, 5, 42, 52, 48, 5])
數組是可變的;它們的元素可以類似列表的方式進行更改。
import array as arr numbers = arr.array('i', [1, 2, 3, 5, 7, 10]) # 改變第一個元素 numbers[0] = 0 print(numbers) # 輸出: array('i', [0, 2, 3, 5, 7, 10]) # 改變第3到第5個元素 numbers[2:5] = arr.array('i', [4, 6, 8]) print(numbers) # 輸出: array('i', [0, 2, 4, 6, 8, 10])
我們可以使用append()方法將一個項目添加到列表中,或者使用extend()方法將多個項目添加到列表中 。
import array as arr numbers = arr.array('i', [1, 2, 3]) numbers.append(4) print(numbers) # 輸出: array('i', [1, 2, 3, 4]) # extend()將iterable追加到數組的末尾 numbers.extend([5, 6, 7]) print(numbers) # 輸出: array('i', [1, 2, 3, 4, 5, 6, 7])
我們可以使用+運算符連接兩個數組。
import array as arr odd = arr.array('i', [1, 3, 5]) even = arr.array('i', [2, 4, 6]) numbers = arr.array('i') # 創(chuàng)建一個空的整數數組 numbers = odd + even print(numbers)
我們可以使用Python的del語句從數組中刪除一個或多個項目。
import array as arr number = arr.array('i', [1, 2, 3, 3, 4]) del number[2] # 刪除第三個元素 print(number) # 輸出: array('i', [1, 2, 3, 4]) del number # 刪除整個數組 print(number) # 錯誤:沒有定義數組
我們可以使用remove()方法刪除給定項目,也可以使用 方法刪除給 pop()定索引處的項目。
import array as arr numbers = arr.array('i', [10, 11, 12, 12, 13]) numbers.remove(12) print(numbers) # 輸出: array('i', [10, 11, 12, 13]) print(numbers.pop(2)) # 輸出: 12 print(numbers) # 輸出: array('i', [10, 11, 13])
列表比數組靈活得多。它們可以存儲不同數據類型的元素,包括字符串。而且,列表比數組要快。而且,如果您需要對數組和矩陣進行數學計算,則最好使用NumPy庫之類的方法。
除非您真的需要數組(與C代碼接口可能需要數組模塊),否則不要使用它們。