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

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲国内精品久久 | 好妈妈7在线观看高清 | 放荡女小洁的性日记 | 欧美男同猛男 videos 同性 | 欧美激情精品久久久久久不卡 | 九九精品免视频国产成人 | 无限资源在线观看高清 | 奇米影视先锋 | 亚洲精品国产成人中文 | 99精品热 | 国产伦精品一区二区三区女 | 精品人人做人人爽久久久 | gogo人体模特啪啪季玥图片 | 高清视频在线播放 | bt天堂午夜国产精品 | 久久精品国产清白在天天线 | 亚洲网站在线观看 | 亚洲不卡高清免v无码屋 | 国产一区二区免费在线 | 99热热99| 欧美久久久久久久一区二区三区 | 国产日韩欧美综合一区二区三区 | 爽好舒服快想要免费看 | 免费一级特黄特色大片在线观看 | 九色PORNY蝌蚪视频首页 | 国产精品视频二区不卡 | 91久久偷偷做嫩草影院免费看 | 亚洲第一男人天堂 | 香蕉久久网 | 四虎影院久久久 | 日本人和黑人一级纶理片 | 亚洲高清中文字幕一区二区三区 | 美国艳星lisann成人作品 | 4444www免费看 | 亚洲精品成人AV在线观看爽翻 | 精品免费国产 | 亚洲精品久久久久久婷婷 | 午夜伦伦电影理论片大片 | 国产私拍精品88福利视频 | 午夜伦理电影在线观免费 | 亚洲国产精品成人久久 |