blob: 4c8b5f2defdd4414db1ff735da64dbbfe4c1c03d [file] [log] [blame]
Fred Drake3a0351c1998-04-04 07:23:21 +00001\section{Built-in Module \module{array}}
Fred Drakeb91e9341998-07-23 17:59:49 +00002\declaremodule{builtin}{array}
3
4\modulesynopsis{Efficient arrays of uniformly typed numeric values.}
5
Guido van Rossum5fdeeea1994-01-02 01:22:07 +00006\index{arrays}
7
8This module defines a new object type which can efficiently represent
9an array of basic values: characters, integers, floating point
10numbers. Arrays are sequence types and behave very much like lists,
11except that the type of objects stored in them is constrained. The
12type is specified at object creation time by using a \dfn{type code},
13which is a single character. The following type codes are defined:
14
Fred Drakeee601911998-04-11 20:53:03 +000015\begin{tableiii}{c|l|c}{code}{Type code}{C Type}{Minimum size in bytes}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000016\lineiii{'c'}{character}{1}
17\lineiii{'b'}{signed integer}{1}
Guido van Rossumb0b81811997-01-03 19:20:52 +000018\lineiii{'B'}{unsigned integer}{1}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000019\lineiii{'h'}{signed integer}{2}
Guido van Rossumb0b81811997-01-03 19:20:52 +000020\lineiii{'H'}{unsigned integer}{2}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000021\lineiii{'i'}{signed integer}{2}
Guido van Rossumb0b81811997-01-03 19:20:52 +000022\lineiii{'I'}{unsigned integer}{2}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000023\lineiii{'l'}{signed integer}{4}
Guido van Rossumb0b81811997-01-03 19:20:52 +000024\lineiii{'L'}{unsigned integer}{4}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000025\lineiii{'f'}{floating point}{4}
26\lineiii{'d'}{floating point}{8}
27\end{tableiii}
28
29The actual representation of values is determined by the machine
Fred Drake8a135251998-02-27 15:19:42 +000030architecture (strictly speaking, by the \C{} implementation). The actual
Guido van Rossumb0b81811997-01-03 19:20:52 +000031size can be accessed through the \var{itemsize} attribute. The values
32stored for \code{'L'} and \code{'I'} items will be represented as
33Python long integers when retrieved, because Python's plain integer
Fred Drakedd1f52b1998-04-03 03:35:24 +000034type cannot represent the full range of \C{}'s unsigned (long) integers.
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000035
Guido van Rossumecde7811995-03-28 13:35:14 +000036
Fred Drakedd1f52b1998-04-03 03:35:24 +000037The module defines the following function and type object:
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000038
Fred Drakecce10901998-03-17 06:33:25 +000039\begin{funcdesc}{array}{typecode\optional{, initializer}}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000040Return a new array whose items are restricted by \var{typecode}, and
41initialized from the optional \var{initializer} value, which must be a
42list or a string. The list or string is passed to the new array's
Fred Drake8a135251998-02-27 15:19:42 +000043\method{fromlist()} or \method{fromstring()} method (see below) to add
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000044initial items to the array.
45\end{funcdesc}
46
Fred Drakedd1f52b1998-04-03 03:35:24 +000047\begin{datadesc}{ArrayType}
48Type object corresponding to the objects returned by
49\function{array()}.
50\end{datadesc}
51
52
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000053Array objects support the following data items and methods:
54
Fred Drakedd1f52b1998-04-03 03:35:24 +000055\begin{memberdesc}[array]{typecode}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000056The typecode character used to create the array.
Fred Drakedd1f52b1998-04-03 03:35:24 +000057\end{memberdesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000058
Fred Drakedd1f52b1998-04-03 03:35:24 +000059\begin{memberdesc}[array]{itemsize}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000060The length in bytes of one array item in the internal representation.
Fred Drakedd1f52b1998-04-03 03:35:24 +000061\end{memberdesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000062
Fred Drake8a135251998-02-27 15:19:42 +000063
Fred Drakedd1f52b1998-04-03 03:35:24 +000064\begin{methoddesc}[array]{append}{x}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000065Append a new item with value \var{x} to the end of the array.
Fred Drakedd1f52b1998-04-03 03:35:24 +000066\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000067
Fred Drakedd1f52b1998-04-03 03:35:24 +000068\begin{methoddesc}[array]{buffer_info}{}
Fred Drakebef9b0b1997-12-29 19:33:45 +000069Return a tuple \code{(\var{address}, \var{length})} giving the current
Guido van Rossum8f062471997-08-14 19:50:37 +000070memory address and the length in bytes of the buffer used to hold
71array's contents. This is occasionally useful when working with
72low-level (and inherently unsafe) I/O interfaces that require memory
Fred Drake8a135251998-02-27 15:19:42 +000073addresses, such as certain \cfunction{ioctl()} operations. The returned
Guido van Rossum8f062471997-08-14 19:50:37 +000074numbers are valid as long as the array exists and no length-changing
75operations are applied to it.
Fred Drakedd1f52b1998-04-03 03:35:24 +000076\end{methoddesc}
Guido van Rossum8f062471997-08-14 19:50:37 +000077
Fred Drakedd1f52b1998-04-03 03:35:24 +000078\begin{methoddesc}[array]{byteswap}{x}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000079``Byteswap'' all items of the array. This is only supported for
Guido van Rossum16d6e711994-08-08 12:30:22 +000080integer values. It is useful when reading data from a file written
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000081on a machine with a different byte order.
Fred Drakedd1f52b1998-04-03 03:35:24 +000082\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000083
Fred Drakedd1f52b1998-04-03 03:35:24 +000084\begin{methoddesc}[array]{fromfile}{f, n}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000085Read \var{n} items (as machine values) from the file object \var{f}
86and append them to the end of the array. If less than \var{n} items
Fred Drake8a135251998-02-27 15:19:42 +000087are available, \exception{EOFError} is raised, but the items that were
Guido van Rossum470be141995-03-17 16:07:09 +000088available are still inserted into the array. \var{f} must be a real
Fred Drakedd1f52b1998-04-03 03:35:24 +000089built-in file object; something else with a \method{read()} method won't
Guido van Rossum470be141995-03-17 16:07:09 +000090do.
Fred Drakedd1f52b1998-04-03 03:35:24 +000091\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000092
Fred Drakedd1f52b1998-04-03 03:35:24 +000093\begin{methoddesc}[array]{fromlist}{list}
Guido van Rossum6c4f0031995-03-07 10:14:09 +000094Append items from the list. This is equivalent to
Fred Drake8a135251998-02-27 15:19:42 +000095\samp{for x in \var{list}:\ a.append(x)}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000096except that if there is a type error, the array is unchanged.
Fred Drakedd1f52b1998-04-03 03:35:24 +000097\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +000098
Fred Drakedd1f52b1998-04-03 03:35:24 +000099\begin{methoddesc}[array]{fromstring}{s}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000100Appends items from the string, interpreting the string as an
101array of machine values (i.e. as if it had been read from a
Fred Drake8a135251998-02-27 15:19:42 +0000102file using the \method{fromfile()} method).
Fred Drakedd1f52b1998-04-03 03:35:24 +0000103\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000104
Fred Drakedd1f52b1998-04-03 03:35:24 +0000105\begin{methoddesc}[array]{insert}{i, x}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000106Insert a new item with value \var{x} in the array before position
107\var{i}.
Fred Drakedd1f52b1998-04-03 03:35:24 +0000108\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000109
Fred Drakedd1f52b1998-04-03 03:35:24 +0000110\begin{methoddesc}[array]{read}{f, n}
Fred Drake92e31941998-02-27 16:21:31 +0000111\deprecated {1.5.1}
112 {Use the \method{fromfile()} method.}
Fred Drake8a135251998-02-27 15:19:42 +0000113Read \var{n} items (as machine values) from the file object \var{f}
114and append them to the end of the array. If less than \var{n} items
115are available, \exception{EOFError} is raised, but the items that were
116available are still inserted into the array. \var{f} must be a real
117built-in file object; something else with a \method{read()} method won't
118do.
Fred Drakedd1f52b1998-04-03 03:35:24 +0000119\end{methoddesc}
Fred Drake8a135251998-02-27 15:19:42 +0000120
Fred Drakedd1f52b1998-04-03 03:35:24 +0000121\begin{methoddesc}[array]{reverse}{}
Fred Drake8a135251998-02-27 15:19:42 +0000122Reverse the order of the items in the array.
Fred Drakedd1f52b1998-04-03 03:35:24 +0000123\end{methoddesc}
Fred Drake8a135251998-02-27 15:19:42 +0000124
Fred Drakedd1f52b1998-04-03 03:35:24 +0000125\begin{methoddesc}[array]{tofile}{f}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000126Write all items (as machine values) to the file object \var{f}.
Fred Drakedd1f52b1998-04-03 03:35:24 +0000127\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000128
Fred Drakedd1f52b1998-04-03 03:35:24 +0000129\begin{methoddesc}[array]{tolist}{}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000130Convert the array to an ordinary list with the same items.
Fred Drakedd1f52b1998-04-03 03:35:24 +0000131\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000132
Fred Drakedd1f52b1998-04-03 03:35:24 +0000133\begin{methoddesc}[array]{tostring}{}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000134Convert the array to an array of machine values and return the
135string representation (the same sequence of bytes that would
Fred Drake8a135251998-02-27 15:19:42 +0000136be written to a file by the \method{tofile()} method.)
Fred Drakedd1f52b1998-04-03 03:35:24 +0000137\end{methoddesc}
Fred Drake8a135251998-02-27 15:19:42 +0000138
Fred Drakedd1f52b1998-04-03 03:35:24 +0000139\begin{methoddesc}[array]{write}{f}
Fred Drake92e31941998-02-27 16:21:31 +0000140\deprecated {1.5.1}
141 {Use the \method{tofile()} method.}
Fred Drake8a135251998-02-27 15:19:42 +0000142Write all items (as machine values) to the file object \var{f}.
Fred Drakedd1f52b1998-04-03 03:35:24 +0000143\end{methoddesc}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000144
145When an array object is printed or converted to a string, it is
146represented as \code{array(\var{typecode}, \var{initializer})}. The
147\var{initializer} is omitted if the array is empty, otherwise it is a
148string if the \var{typecode} is \code{'c'}, otherwise it is a list of
149numbers. The string is guaranteed to be able to be converted back to
150an array with the same type and value using reverse quotes
151(\code{``}). Examples:
152
Fred Drake19479911998-02-13 06:58:54 +0000153\begin{verbatim}
Guido van Rossum5fdeeea1994-01-02 01:22:07 +0000154array('l')
155array('c', 'hello world')
156array('l', [1, 2, 3, 4, 5])
157array('d', [1.0, 2.0, 3.14])
Fred Drake19479911998-02-13 06:58:54 +0000158\end{verbatim}
Fred Drakedd1f52b1998-04-03 03:35:24 +0000159
160
161\begin{seealso}
162\seemodule{struct}{Packing and unpacking of heterogeneous binary data.}
163\end{seealso}