moduł ten definiuje typ obiektu, który może w zwięzły sposób reprezentować tablicę podstawowych wartości: znaków, liczb całkowitych, liczb zmiennoprzecinkowych. Tablice są typami sekwencyjnymi i zachowują się bardzo podobnie do list, z tym że typ obiektów przechowywanych w nich jest ograniczony. Typ jest określony w czasie tworzenia obiektu za pomocą kodu atype, który jest pojedynczym znakiem., Następujące kody typu sądefiniowane:
uwagi:
-
może to być 16 bitów lub 32 bitów w zależności od platformy.
zmieniono w wersji 3.9:
array('u')
teraz używawchar_t
jako Typu C zamiast przestarzałegoPy_UNICODE
. Ta zmiana nie wpływa na jego zachowanie, ponieważPy_UNICODE
jest aliasemwchar_t
od wersji Pythona 3.3.przestarzałe od wersji 3.3, zostaną usunięte w wersji 4.0.,
rzeczywista reprezentacja wartości jest określona przez architekturę maszyny(ściśle mówiąc, przez implementację C). Rzeczywisty rozmiar można uzyskać poprzez atrybut itemsize
.
moduł definiuje następujący typ:
classarray.
array
(typecode)¶
nowa tablica, której elementy są ograniczone przez typecode i inicjalizowana z opcjonalnej wartości inicjalizatora, która musi być listą, obiektem przypominającym abajty lub iterable nad elementami danego typu.,
Jeśli podano listę lub ciąg znaków, inicjalizacja jest przekazywana do nowej tablicyfromlist()
,frombytes()
lubfromunicode()
, aby dodać początkowe pozycje do tablicy. W przeciwnym razie iterable initializer jest przypisany do metody extend()
.
wywołuje zdarzenie kontrolnearray.__new__
z argumentamitypecode
,initializer
.
array.
typecodes
¶
ciąg znaków ze wszystkimi dostępnymi kodami typu.,
obiekty tablicy obsługują zwykłe operacje sekwencyjne indeksowania,wycinania, konkatenacji i mnożenia. Podczas przypisywania slice, assignedvalue musi być obiektem array o tym samym kodzie typu; we wszystkich innych przypadkach wywoływany jestTypeError
. Obiekty Array również implementują interfejs bufora i mogą być używane wszędzie tam, gdzie obsługiwane są obiekty bajtowe.
następujące pozycje danych i metody są również obsługiwane:
array.
typecode
¶
znak kodu typowego użyty do utworzenia tablicy.,
array.
itemsize
¶
długość jednej pozycji tablicy w reprezentacji wewnętrznej w bajtach.
array.
append
(x)¶
dodaje nowy element o wartości x na końcu tablicy.
array.
buffer_info
()¶
zwraca krotkę(address, length)
podając bieżący adres pamięci i długość w elementach bufora używanego do przechowywania zawartości tablicy. Rozmiar bufora pamięci w bajtach można obliczyć jako array.buffer_info() *array.itemsize
., Jest to czasami przydatne podczas pracy z niskopoziomowymi (i niebezpiecznymi) interfejsami We/Wy, które wymagają adresów pamięci, takich jak niektóre operacjeioctl()
. Zwracane liczby są ważne tak długo, jak długo arrayexists i nie są stosowane do nich operacje zmieniające długość.
Uwaga
podczas korzystania z obiektów array z kodu napisanego w C lub c++ (jedyny sposób na efektywne wykorzystanie tych informacji), bardziej sensowne jest użycie bufferinterface obsługiwanej przez obiekty array. Metoda ta jest utrzymywana dla wstecznej zgodności i powinna być unikana w nowym kodzie., Interfejs bufora jest udokumentowany w protokole bufora.
array.
byteswap
()¶
„Byteswap” wszystkie elementy tablicy. Jest to obsługiwane tylko dla wartości o rozmiarze 1, 2, 4 lub 8 bajtów; dla innych typów wartości RuntimeError
. Jest to przydatne przy odczycie danych z pliku zapisanego na maszynie zróżnicową kolejnością bajtów.
array.
count
(x)¶
Zwraca liczbę wystąpień x w tablicy.,
array.
extend
(iterable)¶
dołącza elementy z iterable do końca tablicy. Jeśli iterable jest inną, musi mieć dokładnie ten sam kod typu; jeśli nie,TypeError
zostanie podniesiony. Jeśli iterable nie jest tablicą, musi być iterable, a jej elementy muszą być odpowiednim typem, który ma być dołączony do tablicy.
array.
frombytes
(S)¶
dodaje elementy z łańcucha, interpretując łańcuch jako tablicę wartości maszynowych (tak jakby został odczytany z pliku przy użyciu metodyfromfile()
).,
nowy w wersji 3.2:fromstring()
zmienia nazwę nafrombytes()
dla jasności.
array.
fromfile
(f, n)¶
odczytuje n pozycji (jako wartości maszynowe) z obiektu pliku f i appendthem na koniec tablicy. Jeśli dostępnych jest mniej niż n pozycji,toEOFError
jest podniesione, ale pozycje, które były dostępne, są nadal wstawiane do tablicy. f musi być prawdziwym wbudowanym obiektem pliku; coś zread()
metoda nie zadziała.,
array.
fromlist
(lista)¶
dołącza elementy z listy. Jest to równoważne for x in list:a.append(x)
z tą różnicą, że jeśli wystąpi błąd typu, tablica zostanie niezmieniona.
array.
fromunicode
(s)¶
rozszerza tę tablicę o dane z podanego ciągu znaków unicode. Tablica musi być typu 'u'
tablica; w przeciwnym razie zostanie podniesiona ValueError
. Użyjarray.frombytes(unicodestring.encode(enc))
aby dołączyć dane Unicode do anarray innego typu.,
array.
index
(x)¶
zwraca najmniejsze i takie, że i jest indeksem pierwszego wystąpienia ofx w tablicy.
array.
insert
(I, x)¶
wstawia nowy element o wartości x do tablicy przed pozycją i. wartości ujemne są traktowane jako względne względem końca tablicy.
array.
pop
()¶
usuwa element z indeksem i z tablicy i zwraca go., Opcja jest domyślnie ustawiona na -1
, tak że domyślnie ostatnia Pozycja jest usuwana i odwrócona.
array.
remove
(x)¶
usuwa pierwsze wystąpienie X z tablicy.
array.
reverse
()¶
odwraca kolejność pozycji w tablicy.
array.
tobytes
()¶
konwertuje tablicę na tablicę wartości maszynowych i zwraca bajtyrepresentation (ten sam ciąg bajtów, który zostałby zapisany do pliku przeztofile()
metoda.,)
nowy w wersji 3.2: tostring()
zmienia nazwę natobytes()
dla jasności.
array.
tofile
(f)¶
Zapisz wszystkie elementy (jako wartości maszynowe) do obiektu Pliku f.
array.
tolist
()¶
Konwertuj tablica do zwykłej listy z tymi samymi elementami.
array.
tounicode
()¶
konwertuje tablicę na ciąg znaków unicode. Tablica musi być typu 'u'
tablica;w przeciwnym razie zostanie wywołana ValueError
., Użyj array.tobytes().decode(enc)
, aby uzyskać ciąg znaków unicode z tablicy innego typu.
gdy obiekt tablicy jest drukowany lub konwertowany na łańcuch znaków, jest on reprezentowany jakoarray(typecode, initializer)
. Inicjalizator jest pominięty, jeśli tablica jestempty, w przeciwnym razie jest to ciąg znaków, jeśli kod typowy to 'u'
, w przeciwnym razie jest to lista liczb. Łańcuch jest gwarantowany, że może być przekonwertowany z powrotem do anarray z tym samym typem i wartością za pomocą eval()
, tak długo, jak Klasaarray
została zaimportowana za pomocą from array import array
.,Przykłady:
array('l')array('u', 'hello \u2641')array('l', )array('d', )
Zobacz także
modułstruct
Pakowanie i rozpakowywanie heterogenicznych danych binarnych.
moduł xdrlib
Pakowanie i rozpakowywanie danych zewnętrznej reprezentacji danych (XDR) używanych w niektórych systemach wywołania procedur.
Numerical Python Documentation
Numeric Python extension (NumPy) definiuje inny typ tablicy; seehttp://www.numpy.org/ aby uzyskać więcej informacji na temat numerycznego Pythona.