詳解Python中的array陣列模組相關使用

2022-10-04 21:45:29 字數 2939 閱讀 9200

初始化

arwww.cppcns.comray例項化可以提供乙個引數來描述允許那種資料型別,還可以有乙個初始的資料序列儲存在陣列中。

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)

陣列配置為包含乙個位元組序列,用乙個簡單的字串初始化。

>>> ******************************== restart ******************************==

>>>

as string: this is the array.

as array : array('c', 'this is the array.')

as hex : 54686973206973207468652061727261792e

處理陣列

類似於其他python序列,可以採用同樣方式擴充套件和處理array。

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))

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

>>> ******************************== 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)]

陣列和檔案

可以使用高效讀/寫檔案的專用內建方法將陣列的內容寫入檔案或從檔案讀取陣列。

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轉換整個陣列而無須迭代處理每個元素。

import array

import binascii

def to_hex(a):

chars_per_it程式設計客棧em = a.item程式設計客棧size * 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中迴圈處理資料高效的多。   

>>> ******************************== 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

本文位址:

Python中list轉換array的乙個問題

詳細版本見個人部落格 python中list轉換array的乙個問題 我在資料分析過程中需要將list轉換為array,但是轉換的過程出了一點問題,下面是記錄。下面的a是乙個list型別,如果要進行numpy的一些數值運算,我們就需要將它轉換為array型別。import numpy as np a...

python中list和array的區別

numpy.array可以專門表示二維或多維資料 b np.array a b array 1,2,3 4,5,6 7,8,9 總結兩點不同的地方 1.元素型別 list是python的基本資料型別,它的元素型別可以不同。如 1,2,a 3,4 array是numpy的一種資料型別,所包含的元素型別...

詳解 python 詳解python中 的用法

python中 的用法 是乙個裝飾器,針對函式,起呼叫傳參的作用。有修飾和被修飾的區別,function作為乙個裝飾器,用來修飾緊跟著的函式 可以是另乙個裝飾器,也可以是函式定義 結果1it s funa分析1 funa 修飾函式定義def func 將func 賦值給funa 的形參。執行的時候由...