国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > Python > 正文

Python中的array模塊

2023-04-24 19:21:34
字體:
來源:轉載
供稿:網友

Python并沒有像其他語言那樣直接提供了數組(array)這種數據結構,而是通過導入array模塊來完成數組的相關操作。

在Python中沒有直接引入數組,也是由于Python中提供了列表這種數據結構,支持像數組一樣的元素插入、修改和刪除等操作。

但Python列表中的元素可以具有不同的數據類型,這一點與數組是不同的。如果想即使如此,額外提供一種數據結構來解決這種問題也沒有必要。

Python array模塊

一、Python中的array模塊

Python中的array模塊允許我們創建一個具有數據類型約束的數組,而且Python的array模塊僅支持幾類數據類型。其支持的數據類型主要有以下幾種:

類型碼 對應的C類型 Python類型 最小字節數
'b' signed char int 1
'B' unsigned char int 1
'u' Py_UNICODE 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' float float 8

其中,'u' 對應Python中已過時的unicode字符(Py_UNICODE),這種類型在Python3.3中被棄用,也將在4.0中被刪除。如此以來,在array模塊中只剩下整數類型或float類型。

二、創建數組

在創建和使用數組時,首先需要引入array模塊。

創建數組的語法格式如下:

array.array( typecode[, initializer])

其含義是使用typecode給出數組元素的類型,并由initializer進行初始化。

typecode參數即是上表給出的類型碼,用于指定數組元素的類型。

initializer是可選參數,用于初始化數組的參數,該參數必須是一個列表,或字節類對象或可迭代類型。

下面給出一些具體的例子。

import array

array1 = array.array('i', [11,12,13,14])
array2 = array.array('B', [97,98,99,49,50])
array3 = array.array('f', [1.1,1.2,1.3,1.4])

上面的例子創建了2個整型數組單精度的浮點數數組。

雖然,'B'在C中對應的是無符號字符類型,但在Python中對應的是int類型,所以其元素的類型需要是整數類型。

三、輸出數組及類型

下面使用print輸出數組的類型及用于初始化的元素,同時使用typecode屬性可以獲取創建數組時指定的類型字符。

print(array1)
print(array2)
print(array3.typecode)
print(array2.typecode)
print(type(array2))

輸出結果如下:

array('i', [11, 12, 13, 14])
array('b', [97, 98, 99, 49, 2])
f
b
<class 'array.array'>

上面的例子中,type()函數是一個內置函數,用于輸出對象的類型。

四、訪問數組中的元素

我們可以使用循環語句輸出數組中的每個元素,也可以使用數組索引來訪問數組中的特定元素。

import array
ara = array.array('i', [11,12,13,14])

for e in ara:
    print(e)

print(f'ara[2] = {ara[2]}/n'#輸出索引為2的元素值

#使用索引循環輸出每個元素
for i in range(0, len(ara)):
    print(f'ara[{i}] = {ara[i]}')

結果如下:

11
12
13
14
ara[2] = 13

ara[0] = 11
ara[1] = 12
ara[2] = 13
ara[3] = 14

注意:python的數組索引也是從0開始的,如果索引越界,將引發IndexError錯誤。

五、向數組中插入或追加元素

我們可以使用insert()函數在數組指定索引處插入一個新元素,指定索引處的原元素將向后(右)移動一個位置。insert()函數的語法格式如下:

array.insert(i, x)

在數組 array 的 i 位置之前插入一個新元素 x i 代表插入的位置, x 代表要插入的元素值。

我們也可以使用append()函數在數組末尾追加一個元素。append()函數的語法格式如下:

array.append(x)

在數組array的尾端追加一個新元素。即, x 為要追加的元素值。

下面是兩個函數使用的一個例子:

import array

a = array.array('i',[11,12,13,14])
print(f'原數組:{a}')

a.insert(2, 131)
print(f'插入元素后:{a}')

a.append(15)
print(f'追加新元素后:{a}')

輸出結果如下:

原數組:array('i', [11, 12, 13, 14])
插入元素后:array('i', [11, 12, 131, 13, 14])
追加新元素后:array('i', [11, 12, 131, 13, 14, 15])

六、從數組中刪除一個元素

我們可以使用remove()函數刪除指定的元素。remove函數的語法格式如下:

array.remove(x)

該函數的作用是從數組array中刪除第一個值為 x 的元素。

import array

array4 = array.array('i', [11,12,13,14,13])
print(f'刪除前:{array4}')
array4.remove(13)
print(f'刪除后:{array4}')

執行結果如下所示:

刪除前:array('i', [11, 12, 13, 14, 13])
刪除后:array('i', [11, 12, 14, 13])

我們也可以使用pop()函數移除指定位置處的元素。pop函數的語法如下:

return_value = array.pop([i])

該函數的作用是移除索引 i 處的元素,并返回該元素值。 i 默認為 -1,即省略i時,默認是移除數組尾端的元素。

import array

array5 = array.array('i', [11,12,13,14,15])
print(f'操作前:{array5}')
rtn = array5.pop()
print(f'操作后:{array5},移除的元素為:{rtn}')
rtn = array5.pop(2)
print(f'array5.pop(2)={rtn},操作后的數組:{array5}')

運行的結果如下:

操作前:array('i', [11, 12, 13, 14, 15])
操作后:array('i', [11, 12, 13, 14]),移除的元素為:15
array5.pop(2)=13,操作后的數組:array('i', [11, 12, 14])

注意:在使用remove進行操作時,如果指定的元素值在數組中不存在時會引發ValueError錯誤。

七、從數組中查找指定的元素

我們可以使用Index()函數在數組中查找指定的元素值。index()函數的語法格式如下:

array.index(x[, start[, stop]])

其中,x為要查找的元素值,start為搜索的起始位置,stop為搜索的停止位置。

該函數將返回第一個匹配的元素索引,如果數組中不存在指定的x值,將引發ValueError錯誤。

下面是index()函數使用的一個例子:

import array

array6 = array.array('i',[11,12,13,14,15])
pos = array6.index(13)
try:
    print(f'13的索引是{pos}')
except ValueError as ve:
    print('數組中不存在13')

運行結果如下:

13的索引是2

八、修改指定索引處的值

我們可以使用數組索引的方式通過賦值來修改數組指定索引處的值。

import array

array7 = array.array('i', [11, 12, 13, 14, 15])
array7[2] = 3
array7[3] = 4
print(f'修改后的數組為:{array7}')

try:
   array7[5] = 5
except IndexError as ie:
  print('數組索引使用出現錯誤。')

輸出結果如下:

修改后的數組為:array('i', [11, 12, 3, 4, 15])
數組索引使用出現錯誤。

九、使用extend()函數擴展數組

我們可以使用extend()函數將一個可迭代對象追加到數組的尾端。

extend()函數的語法格式如下:

array.extend(iterable)

iterable中為數組尾端追加新元素。如果iterable是數組的話,iterable必須與被追加元素的數組具有相同的類型碼,否則,將引發TypeError錯誤;如果iterable不是數組,則iterable必須是可迭代的,同時iterable的元素類型需與數組具有相同的類型。

import array

array8 = array.array('i', [11,12,13])
array9 = array.array('i', [14,15,16,17])

array8.extend(array9)
print(array8)

array9.extend([18,19])
print(array9)

array9.extend(set([20,21,22]))
print(array9)

輸出結果如下:

array('i', [11, 12, 13, 14, 15, 16, 17])
array('i', [14, 15, 16, 17, 18, 19])
array('i', [14, 15, 16, 17, 18, 19, 20, 21, 22])

十、使用數組的負向索引操作數組

數組也支持負向索引,即從后端開始訪問數組中的元素。數組元素、正向索引及負向索引的關系可以由下圖來表示。

數組的負向索引

import array

array_a =  array.array('i', [11, 12, 13, 14, 15, 16, 17, 18, 19, 20])
print(f'array_a[9] = {array_a[9]}');
print(f'array_a[-1] = {array_a[-1]}');

輸出結果如下:

array_a[9] = 20
array_a[-1] = 20

十一、對數組進行切片操作

Python數組也支持切片操作,返回數組若干元素的一個新數組。此操作不會改變原數組。同時切片操作也支持負向索引。

import array

array_b = array.array('i', [1, 2, 3 ,4, 5, 6, 7])

print(array_b[2:])
print(array_b[2:5])
print(array_b[:4])
print(array_b[-3:])
print(array_b[-5:-2])
print(array_b[:-2])

輸出結果如下:

array('i', [3, 4, 5, 6, 7])
array('i', [3, 4, 5])
array('i', [1, 2, 3, 4])
array('i', [5, 6, 7])
array('i', [3, 4, 5])
array('i', [1, 2, 3, 4, 5])

關于Python切片操作的更多知識可以參看本站中的另外一篇文章:全面掌握Python字符串切片方法

十二、返回數組中某元素的個數

我們可以使用count()函數返回數組中特定元素的個數。

import array

array_c = array.array('i', [11,12,11,13,12,11])
print(array_c.count(11))  # 3
print(array_c.count(15)) # 0

十三、翻轉一個數組

我們可以使用reverse()函數對數組進行翻轉操作。即翻轉數組元素的順序。

import array

array_d = array.array('i', [11, 12, 13, 14, 15])
array_d.reverse()
print(array_d)

輸出結果如下:

array('i', [15, 14, 13, 12, 11])

十四、把數組轉換為列表

我們可以使用tolist()函數把數組轉換成具有相同項的普通列表。

import array

array_e = array.array('i', [11, 12, 13, 14, 15])
lst = array_e.tolist()
print(lst)

輸出結果如下:

[11, 12, 13, 14, 15]

十五、獲取數組元素的個數

我們可以使用Python內置函數len()獲取數組中元素的個數。

import array

array_f = array.array('i', [11, 12, 13, 14, 15])
print(len(array_f))  # 5

十六、獲取數組元素所占的字節數

我們可以使用array.itemsize來獲取數組中每個元素所占的字節數。

import array

array_g = array.array('i', [11, 12, 13, 14, 15])
print(array_g.itemsize)  # 4
array_h = array.array('q', [11, 12, 13, 14, 15])
print(array_h.itemsize)  # 8

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 万全县| 上虞市| 托里县| 大厂| 西藏| 东方市| 时尚| 博罗县| 衢州市| 玉龙| 武安市| 民权县| 闵行区| 海晏县| 呼图壁县| 阿克陶县| 疏勒县| 乡城县| 安多县| 浠水县| 广丰县| 宁安市| 泽州县| 临夏市| 涿州市| 鱼台县| 崇文区| 长岭县| 南乐县| 屏山县| 花莲市| 台南县| 徐水县| 西宁市| 蒲江县| 西乌珠穆沁旗| 喀喇| 响水县| 扎囊县| 西贡区| 神池县|