Maison  >  Article  >  développement back-end  >  Utilisations associées du module array array en Python

Utilisations associées du module array array en Python

不言
不言original
2018-04-16 17:03:052078parcourir

Les tableaux ne sont pas une structure de données standard intégrée à Python, mais avec le module array, nous pouvons également utiliser des structures de tableau en Python Ci-dessous, nous expliquerons en détail l'utilisation du module array en Python

Initialisation
L'instanciation du tableau peut fournir un paramètre pour décrire le type de données autorisé, et peut également avoir une séquence de données initiale stockée dans le tableau.

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)

Le tableau est configuré pour contenir une séquence d'octets, initialisée avec une simple chaîne.


>>> ================================ RESTART ================================
>>> 
As string: This is the array.
As array : array('c', 'This is the array.')
As hex  : 54686973206973207468652061727261792e


La gestion des tableaux
est similaire à d'autres séquences Python et peut être étendue dans le de la même manière et tableau de processus.

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

Les opérations prises en charge incluent le partitionnement, l'itération et l'ajout d'éléments à la fin.


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

Tableaux et fichiers

Méthodes intégrées dédiées pour lire/écrire efficacement des fichiers peut être utilisé Écrit le contenu d'un tableau dans un fichier ou lit un tableau à partir d'un fichier.

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

Ordre des octets candidats
Si les données du tableau ne En utilisant l'ordre des octets inhérent, ou la nécessité d'échanger l'ordre avant de l'envoyer à un système avec un ordre d'octets différent, il est possible de convertir l'intégralité du tableau en Python sans parcourir chaque élément.

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() permutera l'ordre des octets des éléments du tableau C, ce qui est beaucoup plus efficace que de parcourir les données en 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


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn