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:

  1. 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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *