blob: 0380bd6d1bd9abee74aca50c123567085f507ac9 [file] [log] [blame]
Guido van Rossum470be141995-03-17 16:07:09 +00001\section{Built-in Module \sectcode{array}}
Guido van Rossume47da0a1997-07-17 16:34:52 +00002\label{module-array}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00003\bimodindex{array}
4\index{arrays}
5
6This module defines a new object type which can efficiently represent
7an array of basic values: characters, integers, floating point
8numbers. Arrays are sequence types and behave very much like lists,
9except that the type of objects stored in them is constrained. The
10type is specified at object creation time by using a \dfn{type code},
11which is a single character. The following type codes are defined:
12
Fred Drake8a135251998-02-27 15:19:42 +000013\begin{tableiii}{|c|c|c|}{code}{Type code}{Type}{Minimum size in bytes}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000014\lineiii{'c'}{character}{1}
15\lineiii{'b'}{signed integer}{1}
Guido van Rossumb0b81811997-01-03 19:20:52 +000016\lineiii{'B'}{unsigned integer}{1}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000017\lineiii{'h'}{signed integer}{2}
Guido van Rossumb0b81811997-01-03 19:20:52 +000018\lineiii{'H'}{unsigned integer}{2}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000019\lineiii{'i'}{signed integer}{2}
Guido van Rossumb0b81811997-01-03 19:20:52 +000020\lineiii{'I'}{unsigned integer}{2}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000021\lineiii{'l'}{signed integer}{4}
Guido van Rossumb0b81811997-01-03 19:20:52 +000022\lineiii{'L'}{unsigned integer}{4}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000023\lineiii{'f'}{floating point}{4}
24\lineiii{'d'}{floating point}{8}
25\end{tableiii}
26
27The actual representation of values is determined by the machine
Fred Drake8a135251998-02-27 15:19:42 +000028architecture (strictly speaking, by the \C{} implementation). The actual
Guido van Rossumb0b81811997-01-03 19:20:52 +000029size can be accessed through the \var{itemsize} attribute. The values
30stored for \code{'L'} and \code{'I'} items will be represented as
31Python long integers when retrieved, because Python's plain integer
Fred Drake8a135251998-02-27 15:19:42 +000032type can't represent the full range of \C{}'s unsigned (long) integers.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000033
Fred Drake8a135251998-02-27 15:19:42 +000034See also built-in module \module{struct}\refbimodindex{struct}.
Guido van Rossumecde7811995-03-28 13:35:14 +000035
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000036The module defines the following function:
37
Guido van Rossum16d6e711994-08-08 12:30:22 +000038\begin{funcdesc}{array}{typecode\optional{\, initializer}}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000039Return a new array whose items are restricted by \var{typecode}, and
40initialized from the optional \var{initializer} value, which must be a
41list or a string. The list or string is passed to the new array's
Fred Drake8a135251998-02-27 15:19:42 +000042\method{fromlist()} or \method{fromstring()} method (see below) to add
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000043initial items to the array.
44\end{funcdesc}
45
46Array objects support the following data items and methods:
47
Fred Drake8a135251998-02-27 15:19:42 +000048\setindexsubitem{(array attribute)}
49
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000050\begin{datadesc}{typecode}
51The typecode character used to create the array.
52\end{datadesc}
53
54\begin{datadesc}{itemsize}
55The length in bytes of one array item in the internal representation.
56\end{datadesc}
57
Fred Drake8a135251998-02-27 15:19:42 +000058\setindexsubitem{(array method)}
59
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000060\begin{funcdesc}{append}{x}
61Append a new item with value \var{x} to the end of the array.
62\end{funcdesc}
63
Guido van Rossum8f062471997-08-14 19:50:37 +000064\begin{funcdesc}{buffer_info}{}
Fred Drakebef9b0b1997-12-29 19:33:45 +000065Return a tuple \code{(\var{address}, \var{length})} giving the current
Guido van Rossum8f062471997-08-14 19:50:37 +000066memory address and the length in bytes of the buffer used to hold
67array's contents. This is occasionally useful when working with
68low-level (and inherently unsafe) I/O interfaces that require memory
Fred Drake8a135251998-02-27 15:19:42 +000069addresses, such as certain \cfunction{ioctl()} operations. The returned
Guido van Rossum8f062471997-08-14 19:50:37 +000070numbers are valid as long as the array exists and no length-changing
71operations are applied to it.
72\end{funcdesc}
73
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000074\begin{funcdesc}{byteswap}{x}
75``Byteswap'' all items of the array. This is only supported for
Guido van Rossum16d6e711994-08-08 12:30:22 +000076integer values. It is useful when reading data from a file written
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000077on a machine with a different byte order.
78\end{funcdesc}
79
80\begin{funcdesc}{fromfile}{f\, n}
81Read \var{n} items (as machine values) from the file object \var{f}
82and append them to the end of the array. If less than \var{n} items
Fred Drake8a135251998-02-27 15:19:42 +000083are available, \exception{EOFError} is raised, but the items that were
Guido van Rossum470be141995-03-17 16:07:09 +000084available are still inserted into the array. \var{f} must be a real
85built-in file object; something else with a \code{read()} method won't
86do.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000087\end{funcdesc}
88
89\begin{funcdesc}{fromlist}{list}
Guido van Rossum6c4f0031995-03-07 10:14:09 +000090Append items from the list. This is equivalent to
Fred Drake8a135251998-02-27 15:19:42 +000091\samp{for x in \var{list}:\ a.append(x)}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000092except that if there is a type error, the array is unchanged.
93\end{funcdesc}
94
95\begin{funcdesc}{fromstring}{s}
96Appends items from the string, interpreting the string as an
97array of machine values (i.e. as if it had been read from a
Fred Drake8a135251998-02-27 15:19:42 +000098file using the \method{fromfile()} method).
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000099\end{funcdesc}
100
101\begin{funcdesc}{insert}{i\, x}
102Insert a new item with value \var{x} in the array before position
103\var{i}.
104\end{funcdesc}
105
Fred Drake8a135251998-02-27 15:19:42 +0000106\begin{funcdesc}{read}{f\, n}
Fred Drake92e31941998-02-27 16:21:31 +0000107\deprecated {1.5.1}
108 {Use the \method{fromfile()} method.}
Fred Drake8a135251998-02-27 15:19:42 +0000109Read \var{n} items (as machine values) from the file object \var{f}
110and append them to the end of the array. If less than \var{n} items
111are available, \exception{EOFError} is raised, but the items that were
112available are still inserted into the array. \var{f} must be a real
113built-in file object; something else with a \method{read()} method won't
114do.
Fred Drake8a135251998-02-27 15:19:42 +0000115\end{funcdesc}
116
117\begin{funcdesc}{reverse}{}
118Reverse the order of the items in the array.
119\end{funcdesc}
120
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000121\begin{funcdesc}{tofile}{f}
122Write all items (as machine values) to the file object \var{f}.
123\end{funcdesc}
124
125\begin{funcdesc}{tolist}{}
126Convert the array to an ordinary list with the same items.
127\end{funcdesc}
128
129\begin{funcdesc}{tostring}{}
130Convert the array to an array of machine values and return the
131string representation (the same sequence of bytes that would
Fred Drake8a135251998-02-27 15:19:42 +0000132be written to a file by the \method{tofile()} method.)
133\end{funcdesc}
134
135\begin{funcdesc}{write}{f}
Fred Drake92e31941998-02-27 16:21:31 +0000136\deprecated {1.5.1}
137 {Use the \method{tofile()} method.}
Fred Drake8a135251998-02-27 15:19:42 +0000138Write all items (as machine values) to the file object \var{f}.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000139\end{funcdesc}
140
141When an array object is printed or converted to a string, it is
142represented as \code{array(\var{typecode}, \var{initializer})}. The
143\var{initializer} is omitted if the array is empty, otherwise it is a
144string if the \var{typecode} is \code{'c'}, otherwise it is a list of
145numbers. The string is guaranteed to be able to be converted back to
146an array with the same type and value using reverse quotes
147(\code{``}). Examples:
148
Fred Drake19479911998-02-13 06:58:54 +0000149\begin{verbatim}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000150array('l')
151array('c', 'hello world')
152array('l', [1, 2, 3, 4, 5])
153array('d', [1.0, 2.0, 3.14])
Fred Drake19479911998-02-13 06:58:54 +0000154\end{verbatim}