一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 詳解Python中的array數組模塊相關使用

詳解Python中的array數組模塊相關使用

2020-09-01 08:58lucifercn Python

數組并不是Python中內置的標配數據結構,不過擁有array模塊我們也可以在Python中使用數組結構,下面我們就來詳解詳解Python中的array數組模塊相關使用

初始化
array實例化可以提供一個參數來描述允許那種數據類型,還可以有一個初始的數據序列存儲在數組中。

?
1
2
3
4
5
6
7
import array
import binascii
s = 'This is the array.'
a = array.array('c', s)
print 'As string:', s
print 'As array :', a
print 'As hex  :', binascii.hexlify(a)

數組配置為包含一個字節序列,用一個簡單的字符串初始化。

?
1
2
3
4
5
>>> ================================ RESTART ================================
>>>
As string: This is the array.
As array : array('c', 'This is the array.')
As hex  : 54686973206973207468652061727261792e


處理數組
類似于其他python序列,可以采用同樣方式擴展和處理array。

?
1
2
3
4
5
6
7
8
9
import array
import pprint
a = array.array('i', xrange(3))
print 'Initial :', a
a.extend(xrange(3))
print 'Extended:', a
print 'slice: :', a[2:5]
print 'Itetator:'
print list(enumerate(a))

支持的操作包括分片,迭代以及向末尾增加元素。

?
1
2
3
4
5
6
7
>>> ================================ RESTART ================================
>>>
Initial : array('i', [0, 1, 2])
Extended: array('i', [0, 1, 2, 0, 1, 2])
slice: : array('i', [2, 0, 1])
Itetator:
[(0, 0), (1, 1), (2, 2), (3, 0), (4, 1), (5, 2)]


數組和文件
可以使用高效讀/寫文件的專用內置方法將數組的內容寫入文件或從文件讀取數組。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import array
import binascii
import tempfile
 
a = array.array('i', xrange(5))
print 'A1: ',a
output = tempfile.NamedTemporaryFile()
a.tofile(output.file)
output.flush
 
with open(output.name, 'rb') as input:
  raw_input = input.read()
  print 'Raw Contents:', binascii.hexlify(raw_data)
 
  input.seek(0)
  a2 = array.array('i')
  a2.fromfile(input, len(a))
  print 'A2: ', a2

   

候選字節順序
如果數組中的數據沒有采用固有的字節順序,或者在發送到一個采用不同字節順序的系統前需要交換順序,可以在python轉換整個數組而無須迭代處理每個元素。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import array
import binascii
 
def to_hex(a):
  chars_per_item = a.itemsize * 2
  hex_version = binascii.hexlify(a)
  num_chunks = len(hex_version) / chars_per_item
  for i in xrange(num_chunks):
    start = i * chars_per_item
    end = start + chars_per_item
    yield hex_version[start:end]
 
a1 = array.array('i', xrange(5))
a2 = array.array('i', xrange(5))
a2.byteswap()
 
fmt = '%10s %10s %10s %10s'
print fmt % ('A1_hex', 'A1', 'A2_hex', 'A2')
print fmt % (('-' * 10,) * 4)
for value in zip(to_hex(a1), a1, to_hex(a2), a2):
  print fmt % value

byteswap()會交換C數組中元素的字節順序,比在python中循環處理數據高效的多。   

?
1
2
3
4
5
6
7
8
9
>>> ================================ RESTART ================================
>>>
  A1_hex     A1   A2_hex     A2
---------- ---------- ---------- ----------
 00000000     0  00000000     0
 01000000     1  00000001  16777216
 02000000     2  00000002  33554432
 03000000     3  00000003  50331648
 04000000     4  00000004  67108864

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91在线精品视频 | 国产欧美一区二区三区免费看 | 亚洲精品乱码蜜桃久久久 | 国产综合欧美日韩视频一区 | 欧美精品一区二区在线观看 | 国内精品久久久久影院男同志 | 免费看黄色一级 | 成人精品视频 成人影院 | 99r视频 | 欧美se图| 无人区尖叫之夜美女姐姐视频 | bt国产| 国产福利你懂的 | 狠狠撸在线播放 | 7777色鬼xxxx欧美色夫 | 免费看一级毛片 | 波多野结衣xxxxx在线播放 | 黑人女性猛交xxxxxⅹxx | 国内精品一区二区三区东京 | 99精品影院 | 国自产在线精品免费 | 我的好妈妈7中字在线观看韩国 | 日本中年japanesebear | 欧美久久天天综合香蕉伊 | 成在线人免费 | 国产99青草全福视在线 | 99热这里只有精品国产免费 | 国产成人久久精品推最新 | 精品久久99麻豆蜜桃666 | 外国老少性配 | 欧美日韩高清一区 | 国产综合成人久久大片91 | 欧美一区二区三区高清不卡tv | 色老板视频在线观看 | 亚洲六月丁香六月婷婷色伊人 | 免费高清视频免费观看 | 日本中文字幕一区二区三区不卡 | 青草香蕉精品视频在线观看 | 四虎网址大全 | 亚洲第一福利网 | 日本高清中文字幕视频在线 |