Heim  >  Artikel  >  Backend-Entwicklung  >  Verwandte Verwendungen des Array-Array-Moduls in Python

Verwandte Verwendungen des Array-Array-Moduls in Python

不言
不言Original
2018-04-16 17:03:052079Durchsuche

Arrays sind keine in Python integrierte Standarddatenstruktur, aber mit dem Array-Modul können wir auch Array-Strukturen in Python verwenden. Im Folgenden erklären wir ausführlich die Verwendung des Array-Moduls in Python

Initialisierung
Array-Instanziierung kann einen Parameter zur Beschreibung des zulässigen Datentyps bereitstellen und auch eine anfängliche Datensequenz im Array speichern.

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)

Das Array ist so konfiguriert, dass es eine Folge von Bytes enthält, die mit einer einfachen Zeichenfolge initialisiert wird.

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


Der Umgang mit Arrays
ähnelt anderen Python-Sequenzen und kann im erweitert werden auf die gleiche Weise und Array verarbeiten.

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

Zu den unterstützten Vorgängen gehören Sharding, Iteration und das Hinzufügen von Elementen am Ende.

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


Arrays und Dateien
Dedizierte integrierte Methoden zum effizienten Lesen/Schreiben von Dateien kann verwendet werden. Schreibt den Inhalt eines Arrays in eine Datei oder liest ein Array aus einer Datei.

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

Kandidaten-Bytereihenfolge
Wenn die Daten im Array dies nicht tun Wenn Sie eine inhärente Bytereihenfolge verwenden oder die Reihenfolge vor dem Senden an ein System mit einer anderen Bytereihenfolge vertauschen müssen, ist es möglich, das gesamte Array in Python zu konvertieren, ohne jedes Element durchlaufen zu müssen.

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() vertauscht die Bytereihenfolge der Elemente im C-Array, was viel effizienter ist als das Durchlaufen von Daten in 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


Das obige ist der detaillierte Inhalt vonVerwandte Verwendungen des Array-Array-Moduls in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn