array — Effektiva arrayer av numeriska värden¶
Denna modul definierar en objekttyp som på ett kompakt sätt kan representera en array av grundläggande värden: tecken, heltal, flyttal. Arrayer är sekvenstyper och beter sig ungefär som listor, med undantag för att typen av objekt som lagras i dem är begränsad. Typen anges när objektet skapas med hjälp av en type code, som är ett enda tecken. Följande typkoder är definierade:
Typkod |
C Type |
Python Type |
Minsta storlek i byte |
Anteckningar |
|---|---|---|---|---|
|
signed char |
int |
1 |
|
|
unsigned char |
int |
1 |
|
|
wchar_t |
Unicode-tecken |
2 |
(1) |
|
Py_UCS4 |
Unicode-tecken |
4 |
(2) |
|
signed short |
int |
2 |
|
|
unsigned short |
int |
2 |
|
|
signed int |
int |
2 |
|
|
unsigned int |
int |
2 |
|
|
signed long |
int |
4 |
|
|
unsigned long |
int |
4 |
|
|
signed long long |
int |
8 |
|
|
unsigned long long |
int |
8 |
|
|
float |
float |
4 |
|
|
double |
float |
8 |
Anteckningar:
Den kan vara 16 bitar eller 32 bitar beroende på plattform.
Ändrad i version 3.9:
array('u')använder nuwchar_tsom C-typ istället för föråldradePy_UNICODE. Denna ändring påverkar inte dess beteende eftersomPy_UNICODEär alias förwchar_tsedan Python 3.3.Deprecated since version 3.3, will be removed in version 3.16: Migrera till
'w'typkod.Tillagd i version 3.13.
Den faktiska representationen av värden bestäms av maskinarkitekturen (strängt taget av C-implementeringen). Den faktiska storleken kan nås via attributet array.itemsize.
Modulen definierar följande objekt:
- array.typecodes¶
En sträng med alla tillgängliga typkoder.
Modulen definierar följande typ:
- class array.array(typecode[, initializer])¶
En ny array vars element begränsas av typecode och initieras från det valfria värdet initializer, som måste vara ett
bytes- ellerbytearray-objekt, en Unicode-sträng eller en iterabel över element av lämplig typ.Om den ges ett
bytesellerbytearray-objekt skickas initialiseraren till den nya arrayensfrombytes()-metod; om den ges en Unicode-sträng skickas initialiseraren tillfromunicode()-metoden; annars skickas initialiserarens iterator tillextend()-metoden för att lägga till initiala objekt i arrayen.Array-objekt stöder de vanliga sekvensoperationerna indexering, skivning, konkatenering och multiplicering. Vid användning av slice assignment måste det tilldelade värdet vara ett array-objekt med samma typkod; i alla andra fall uppstår
TypeError. Array-objekt implementerar också buffertgränssnittet och kan användas överallt där bytesliknande objekt stöds.Utlöser en auditing event
array.__new__med argumententypecode,initializer.- typecode¶
Typkodstecknet som användes för att skapa arrayen.
- itemsize¶
Längden i byte för ett arrayobjekt i den interna representationen.
- append(x)¶
Lägg till ett nytt objekt med värdet x i slutet av arrayen.
- buffer_info()¶
Returnerar en tupel
(adress, längd)som ger den aktuella minnesadressen och längden i element för den buffert som används för att hålla arrayens innehåll. Storleken på minnesbufferten i byte kan beräknas somarray.buffer_info()[1] * array.itemsize. Detta är ibland användbart när man arbetar med lågnivå (och i sig osäkra) I/O-gränssnitt som kräver minnesadresser, t.ex. vissaioctl()-operationer. De returnerade siffrorna är giltiga så länge som arrayen existerar och inga längdförändrande operationer tillämpas på den.Anteckning
När du använder array-objekt från kod skriven i C eller C++ (det enda sättet att effektivt använda denna information) är det mer meningsfullt att använda buffertgränssnittet som stöds av array-objekt. Denna metod bibehålls för bakåtkompatibilitet och bör undvikas i ny kod. Buffertgränssnittet finns dokumenterat i Buffertprotokoll.
- byteswap()¶
”Byteswap” alla objekt i arrayen. Detta stöds endast för värden som är 1, 2, 4 eller 8 byte stora; för andra typer av värden uppstår
RuntimeError. Det är användbart när man läser data från en fil som skrivits på en maskin med en annan byteordning.
- count(x)¶
Returnerar antalet förekomster av x i arrayen.
- extend(iterable)¶
Lägger till objekt från iterable till slutet av arrayen. Om iterable är en annan array, måste den ha exakt samma typkod; om inte, kommer
TypeErroratt tas upp. Om iterable inte är en array måste den vara iterabel och dess element måste vara av rätt typ för att kunna läggas till i arrayen.
- frombytes(buffer)¶
Lägger till objekt från bytes-like object och tolkar dess innehåll som en array av maskinvärden (som om det hade lästs från en fil med metoden
fromfile()).Tillagd i version 3.2:
fromstring()byter namn tillfrombytes()för tydlighetens skull.
- fromfile(f, n)¶
Läser n objekt (som maskinvärden) från file object f och lägger till dem i slutet av arrayen. Om färre än n objekt är tillgängliga, genereras
EOFError, men de objekt som var tillgängliga infogas fortfarande i arrayen.
- fromlist(list)¶
Lägger till objekt från listan. Detta är likvärdigt med
for x in list: a.append(x)förutom att om det finns ett typfel är arrayen oförändrad.
- fromunicode(s)¶
Utökar denna array med data från den angivna Unicode-strängen. Arrayen måste ha typkoden
'u'eller'w'; annars uppstår ettValueError. Användarray.frombytes(unicodestring.encode(enc))för att lägga till Unicode-data till en array av någon annan typ.
- index(x[, start[, stop]])¶
Returnerar den minsta i så att i är index för den första förekomsten av x i arrayen. De valfria argumenten start och stop kan anges för att söka efter x inom en underavdelning av arrayen. Utlöser
ValueErrorom x inte hittas.Ändrad i version 3.10: Valfria parametrar start och stop har lagts till.
- insert(i, x)¶
Infoga ett nytt objekt med värdet x i arrayen före position i. Negativa värden behandlas som relativa till slutet av arrayen.
- pop([i])¶
Tar bort objektet med index i från arrayen och returnerar det. Det valfria argumentet är som standard
\-1, så att det sista objektet som standard tas bort och returneras.
- remove(x)¶
Ta bort den första förekomsten av x från arrayen.
- clear()¶
Ta bort alla element från arrayen.
Tillagd i version 3.13.
- reverse()¶
Omvänd ordning på objekten i arrayen.
- tobytes()¶
Omvandla arrayen till en array med maskinvärden och returnera bytesrepresentationen (samma sekvens av bytes som skulle skrivas till en fil med metoden
tofile())Tillagd i version 3.2:
tostring()byter namn tilltobytes()för tydlighetens skull.
- tofile(f)¶
Skriv alla objekt (som maskinvärden) till file object f.
- tolist()¶
Omvandla arrayen till en vanlig lista med samma objekt.
- tounicode()¶
Konverterar arrayen till en Unicode-sträng. Arrayen måste vara av typen
'u'eller'w', annars uppstår ettValueError. Användarray.tobytes().decode(enc)för att få en Unicode-sträng från en array av någon annan typ.
Strängrepresentationen av array-objekt har formen array(typecode, initializer). initialiseraren utelämnas om arrayen är tom, annars är det en Unicode-sträng om typkoden är 'u' eller 'w', annars är det en lista med siffror. Strängrepresentationen kan garanterat konverteras tillbaka till en array med samma typ och värde med hjälp av eval(), så länge som klassen array har importerats med from array import array. Variablerna inf och nan måste också definieras om de innehåller motsvarande värden i flyttal. Exempel:
array('l')
array('w', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14, -inf, nan])