亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲а∨天堂久久精品9966| 亚洲电影免费观看高清完整版在线| 日韩av综合中文字幕| 亚洲国产高清福利视频| 欧美主播福利视频| 久久久久女教师免费一区| 亚洲精品wwwww| 国产精品福利小视频| 亚洲精品欧美一区二区三区| 欧美日韩精品在线观看| 久久久久久久久久久免费精品| 欧美国产日韩免费| 久久精品免费电影| 亚洲欧洲在线播放| 97精品国产97久久久久久| 亚洲第一页在线| 一区二区亚洲精品国产| 精品日韩视频在线观看| 欧美激情女人20p| 成人中文字幕在线观看| 欧美日韩日本国产| 亚洲肉体裸体xxxx137| 日韩中文字幕视频在线| 日韩美女视频免费在线观看| 欧美大胆a视频| 亚洲一区二区三区视频| 在线午夜精品自拍| 正在播放亚洲1区| 上原亚衣av一区二区三区| 亚洲自拍偷拍一区| 尤物yw午夜国产精品视频| 久久久久久久久久久免费精品| www亚洲欧美| 少妇久久久久久| 国产精品第一第二| 成人在线观看视频网站| 久久精品中文字幕一区| 欧美日韩在线第一页| 亚洲天堂av在线免费| 国产亚洲精品美女久久久| 欧美高跟鞋交xxxxhd| 日本精品久久久久影院| 欧美激情精品久久久久久免费印度| 国产精品视频内| 色综合久久悠悠| 永久免费精品影视网站| 亚洲性xxxx| 亚洲人a成www在线影院| 欧美在线视频免费播放| 成人亚洲欧美一区二区三区| 有码中文亚洲精品| 久久久久久美女| 日韩美女在线观看一区| 久久久人成影片一区二区三区观看| 久久亚洲一区二区三区四区五区高| 久久全球大尺度高清视频| 91精品国产综合久久香蕉最新版| 成人免费高清完整版在线观看| 国产精品免费久久久久影院| 国产日韩欧美自拍| 欧美亚洲第一区| 96pao国产成视频永久免费| 最近2019中文字幕在线高清| 亚洲欧美在线磁力| 国产一区玩具在线观看| 国产精品福利在线观看| 国产日本欧美视频| 欧美国产精品va在线观看| 51ⅴ精品国产91久久久久久| 欧美裸体xxxx极品少妇软件| 日韩成人黄色av| 国产精品美女在线观看| 26uuu久久噜噜噜噜| 成人黄色免费网站在线观看| 欧美人成在线视频| 欧美国产精品va在线观看| 国产精品69av| 8x拔播拔播x8国产精品| 人妖精品videosex性欧美| 国产亚洲精品一区二555| 久久久国产精品x99av| 亚洲人成毛片在线播放| 日本精品久久中文字幕佐佐木| 欧美大成色www永久网站婷| 国产一区二区三区直播精品电影| 国产精品伦子伦免费视频| 国产最新精品视频| 国产精品美女久久久久av超清| 日韩成人免费视频| 在线观看不卡av| 丝袜一区二区三区| 日韩av在线不卡| 中文字幕亚洲一区二区三区五十路| 欧美另类在线播放| 国产精品第七十二页| 欧美在线视频免费| 成人国产精品一区二区| 中文日韩在线观看| 国产欧美日韩最新| 国产精品久久久久久久久久久新郎| 国产精品欧美激情在线播放| 亚洲午夜性刺激影院| 国产一区二区三区久久精品| 亚洲精品电影网| 国产精品白嫩美女在线观看| 欧美精品成人在线| 国产精品视频中文字幕91| 欧美一级黑人aaaaaaa做受| 国产精品一区av| 亚洲午夜精品视频| 91手机视频在线观看| xxxxx成人.com| 亚洲已满18点击进入在线看片| 国产精品久久在线观看| 久久天天躁狠狠躁夜夜躁2014| 精品丝袜一区二区三区| 日本成人在线视频网址| 国产精品女主播视频| 亚洲午夜精品久久久久久性色| 精品国产成人在线| 久久精品成人欧美大片| 综合网中文字幕| 国产精品日韩欧美综合| 中文字幕最新精品| 久久综合色影院| 亚洲欧洲偷拍精品| 国产999精品久久久影片官网| 日韩电影中文字幕在线| 超碰97人人做人人爱少妇| 国产91精品久久久| 久久综合88中文色鬼| 色婷婷综合久久久久中文字幕1| 伊人久久免费视频| 97在线视频一区| 国产精品国产福利国产秒拍| 亚洲视频777| 国产精品久久国产精品99gif| 久久精品电影网| 91精品久久久久久久久久| 久久精品中文字幕一区| 欧美日韩精品二区| 国产精品免费小视频| 热re91久久精品国99热蜜臀| 精品成人69xx.xyz| 中文字幕一区电影| 亚洲第一视频在线观看| 久久精品中文字幕| 国产精品成人va在线观看| 亚洲欧洲激情在线| www.日韩av.com| 在线观看欧美www| 一区二区三欧美| 国产欧美日韩91| 在线看欧美日韩| 国产精品久久不能| 51视频国产精品一区二区| 精品视频在线播放色网色视频| 成人疯狂猛交xxx| 国产精品免费久久久| 亚洲第一区第二区| 国a精品视频大全| 日韩欧美国产中文字幕| 精品国产一区二区三区久久久狼| 精品调教chinesegay|