Quick update to the README file. For intros and books we now point to
[python/dscho.git] / Doc / lib / libarray.tex
blob84b28128d0749cc6541f2daaf0a0e6d99d24abde
1 \section{\module{array} ---
2 Efficient arrays of numeric values}
4 \declaremodule{builtin}{array}
5 \modulesynopsis{Efficient arrays of uniformly typed numeric values.}
8 This module defines a new object type which can efficiently represent
9 an array of basic values: characters, integers, floating point
10 numbers. Arrays\index{arrays} are sequence types and behave very much
11 like lists, except that the type of objects stored in them is
12 constrained. The type is specified at object creation time by using a
13 \dfn{type code}, which is a single character. The following type
14 codes are defined:
16 \begin{tableiii}{c|l|c}{code}{Type code}{C Type}{Minimum size in bytes}
17 \lineiii{'c'}{character}{1}
18 \lineiii{'b'}{signed int}{1}
19 \lineiii{'B'}{unsigned int}{1}
20 \lineiii{'h'}{signed int}{2}
21 \lineiii{'H'}{unsigned int}{2}
22 \lineiii{'i'}{signed int}{2}
23 \lineiii{'I'}{unsigned int}{2}
24 \lineiii{'l'}{signed int}{4}
25 \lineiii{'L'}{unsigned int}{4}
26 \lineiii{'f'}{float}{4}
27 \lineiii{'d'}{double}{8}
28 \end{tableiii}
30 The actual representation of values is determined by the machine
31 architecture (strictly speaking, by the C implementation). The actual
32 size can be accessed through the \member{itemsize} attribute. The values
33 stored for \code{'L'} and \code{'I'} items will be represented as
34 Python long integers when retrieved, because Python's plain integer
35 type cannot represent the full range of C's unsigned (long) integers.
38 The module defines the following function and type object:
40 \begin{funcdesc}{array}{typecode\optional{, initializer}}
41 Return a new array whose items are restricted by \var{typecode}, and
42 initialized from the optional \var{initializer} value, which must be a
43 list or a string. The list or string is passed to the new array's
44 \method{fromlist()} or \method{fromstring()} method (see below) to add
45 initial items to the array.
46 \end{funcdesc}
48 \begin{datadesc}{ArrayType}
49 Type object corresponding to the objects returned by
50 \function{array()}.
51 \end{datadesc}
54 Array objects support the following data items and methods:
56 \begin{memberdesc}[array]{typecode}
57 The typecode character used to create the array.
58 \end{memberdesc}
60 \begin{memberdesc}[array]{itemsize}
61 The length in bytes of one array item in the internal representation.
62 \end{memberdesc}
65 \begin{methoddesc}[array]{append}{x}
66 Append a new item with value \var{x} to the end of the array.
67 \end{methoddesc}
69 \begin{methoddesc}[array]{buffer_info}{}
70 Return a tuple \code{(\var{address}, \var{length})} giving the current
71 memory address and the length in bytes of the buffer used to hold
72 array's contents. This is occasionally useful when working with
73 low-level (and inherently unsafe) I/O interfaces that require memory
74 addresses, such as certain \cfunction{ioctl()} operations. The returned
75 numbers are valid as long as the array exists and no length-changing
76 operations are applied to it.
77 \end{methoddesc}
79 \begin{methoddesc}[array]{byteswap}{x}
80 ``Byteswap'' all items of the array. This is only supported for
81 integer values; for other types of values, \exception{RuntimeError} is
82 raised. It is useful when reading data from a file written on a
83 machine with a different byte order.
84 \end{methoddesc}
86 \begin{methoddesc}[array]{fromfile}{f, n}
87 Read \var{n} items (as machine values) from the file object \var{f}
88 and append them to the end of the array. If less than \var{n} items
89 are available, \exception{EOFError} is raised, but the items that were
90 available are still inserted into the array. \var{f} must be a real
91 built-in file object; something else with a \method{read()} method won't
92 do.
93 \end{methoddesc}
95 \begin{methoddesc}[array]{fromlist}{list}
96 Append items from the list. This is equivalent to
97 \samp{for x in \var{list}:\ a.append(x)}
98 except that if there is a type error, the array is unchanged.
99 \end{methoddesc}
101 \begin{methoddesc}[array]{fromstring}{s}
102 Appends items from the string, interpreting the string as an
103 array of machine values (i.e. as if it had been read from a
104 file using the \method{fromfile()} method).
105 \end{methoddesc}
107 \begin{methoddesc}[array]{insert}{i, x}
108 Insert a new item with value \var{x} in the array before position
109 \var{i}.
110 \end{methoddesc}
112 \begin{methoddesc}[array]{read}{f, n}
113 \deprecated {1.5.1}
114 {Use the \method{fromfile()} method.}
115 Read \var{n} items (as machine values) from the file object \var{f}
116 and append them to the end of the array. If less than \var{n} items
117 are available, \exception{EOFError} is raised, but the items that were
118 available are still inserted into the array. \var{f} must be a real
119 built-in file object; something else with a \method{read()} method won't
121 \end{methoddesc}
123 \begin{methoddesc}[array]{reverse}{}
124 Reverse the order of the items in the array.
125 \end{methoddesc}
127 \begin{methoddesc}[array]{tofile}{f}
128 Write all items (as machine values) to the file object \var{f}.
129 \end{methoddesc}
131 \begin{methoddesc}[array]{tolist}{}
132 Convert the array to an ordinary list with the same items.
133 \end{methoddesc}
135 \begin{methoddesc}[array]{tostring}{}
136 Convert the array to an array of machine values and return the
137 string representation (the same sequence of bytes that would
138 be written to a file by the \method{tofile()} method.)
139 \end{methoddesc}
141 \begin{methoddesc}[array]{write}{f}
142 \deprecated {1.5.1}
143 {Use the \method{tofile()} method.}
144 Write all items (as machine values) to the file object \var{f}.
145 \end{methoddesc}
147 When an array object is printed or converted to a string, it is
148 represented as \code{array(\var{typecode}, \var{initializer})}. The
149 \var{initializer} is omitted if the array is empty, otherwise it is a
150 string if the \var{typecode} is \code{'c'}, otherwise it is a list of
151 numbers. The string is guaranteed to be able to be converted back to
152 an array with the same type and value using reverse quotes
153 (\code{``}). Examples:
155 \begin{verbatim}
156 array('l')
157 array('c', 'hello world')
158 array('l', [1, 2, 3, 4, 5])
159 array('d', [1.0, 2.0, 3.14])
160 \end{verbatim}
163 \begin{seealso}
164 \seemodule{struct}{packing and unpacking of heterogeneous binary data}
165 \seemodule{xdrlib}{packing and unpacking of XDR data}
166 \end{seealso}