|
1 |
|
2 :mod:`array` --- Efficient arrays of numeric values |
|
3 =================================================== |
|
4 |
|
5 .. module:: array |
|
6 :synopsis: Space efficient arrays of uniformly typed numeric values. |
|
7 |
|
8 |
|
9 .. index:: single: arrays |
|
10 |
|
11 This module defines an object type which can compactly represent an array of |
|
12 basic values: characters, integers, floating point numbers. Arrays are sequence |
|
13 types and behave very much like lists, except that the type of objects stored in |
|
14 them is constrained. The type is specified at object creation time by using a |
|
15 :dfn:`type code`, which is a single character. The following type codes are |
|
16 defined: |
|
17 |
|
18 +-----------+----------------+-------------------+-----------------------+ |
|
19 | Type code | C Type | Python Type | Minimum size in bytes | |
|
20 +===========+================+===================+=======================+ |
|
21 | ``'c'`` | char | character | 1 | |
|
22 +-----------+----------------+-------------------+-----------------------+ |
|
23 | ``'b'`` | signed char | int | 1 | |
|
24 +-----------+----------------+-------------------+-----------------------+ |
|
25 | ``'B'`` | unsigned char | int | 1 | |
|
26 +-----------+----------------+-------------------+-----------------------+ |
|
27 | ``'u'`` | Py_UNICODE | Unicode character | 2 | |
|
28 +-----------+----------------+-------------------+-----------------------+ |
|
29 | ``'h'`` | signed short | int | 2 | |
|
30 +-----------+----------------+-------------------+-----------------------+ |
|
31 | ``'H'`` | unsigned short | int | 2 | |
|
32 +-----------+----------------+-------------------+-----------------------+ |
|
33 | ``'i'`` | signed int | int | 2 | |
|
34 +-----------+----------------+-------------------+-----------------------+ |
|
35 | ``'I'`` | unsigned int | long | 2 | |
|
36 +-----------+----------------+-------------------+-----------------------+ |
|
37 | ``'l'`` | signed long | int | 4 | |
|
38 +-----------+----------------+-------------------+-----------------------+ |
|
39 | ``'L'`` | unsigned long | long | 4 | |
|
40 +-----------+----------------+-------------------+-----------------------+ |
|
41 | ``'f'`` | float | float | 4 | |
|
42 +-----------+----------------+-------------------+-----------------------+ |
|
43 | ``'d'`` | double | float | 8 | |
|
44 +-----------+----------------+-------------------+-----------------------+ |
|
45 |
|
46 The actual representation of values is determined by the machine architecture |
|
47 (strictly speaking, by the C implementation). The actual size can be accessed |
|
48 through the :attr:`itemsize` attribute. The values stored for ``'L'`` and |
|
49 ``'I'`` items will be represented as Python long integers when retrieved, |
|
50 because Python's plain integer type cannot represent the full range of C's |
|
51 unsigned (long) integers. |
|
52 |
|
53 The module defines the following type: |
|
54 |
|
55 |
|
56 .. function:: array(typecode[, initializer]) |
|
57 |
|
58 Return a new array whose items are restricted by *typecode*, and initialized |
|
59 from the optional *initializer* value, which must be a list, string, or iterable |
|
60 over elements of the appropriate type. |
|
61 |
|
62 .. versionchanged:: 2.4 |
|
63 Formerly, only lists or strings were accepted. |
|
64 |
|
65 If given a list or string, the initializer is passed to the new array's |
|
66 :meth:`fromlist`, :meth:`fromstring`, or :meth:`fromunicode` method (see below) |
|
67 to add initial items to the array. Otherwise, the iterable initializer is |
|
68 passed to the :meth:`extend` method. |
|
69 |
|
70 |
|
71 .. data:: ArrayType |
|
72 |
|
73 Obsolete alias for :func:`array`. |
|
74 |
|
75 Array objects support the ordinary sequence operations of indexing, slicing, |
|
76 concatenation, and multiplication. When using slice assignment, the assigned |
|
77 value must be an array object with the same type code; in all other cases, |
|
78 :exc:`TypeError` is raised. Array objects also implement the buffer interface, |
|
79 and may be used wherever buffer objects are supported. |
|
80 |
|
81 The following data items and methods are also supported: |
|
82 |
|
83 |
|
84 .. attribute:: array.typecode |
|
85 |
|
86 The typecode character used to create the array. |
|
87 |
|
88 |
|
89 .. attribute:: array.itemsize |
|
90 |
|
91 The length in bytes of one array item in the internal representation. |
|
92 |
|
93 |
|
94 .. method:: array.append(x) |
|
95 |
|
96 Append a new item with value *x* to the end of the array. |
|
97 |
|
98 |
|
99 .. method:: array.buffer_info() |
|
100 |
|
101 Return a tuple ``(address, length)`` giving the current memory address and the |
|
102 length in elements of the buffer used to hold array's contents. The size of the |
|
103 memory buffer in bytes can be computed as ``array.buffer_info()[1] * |
|
104 array.itemsize``. This is occasionally useful when working with low-level (and |
|
105 inherently unsafe) I/O interfaces that require memory addresses, such as certain |
|
106 :cfunc:`ioctl` operations. The returned numbers are valid as long as the array |
|
107 exists and no length-changing operations are applied to it. |
|
108 |
|
109 .. note:: |
|
110 |
|
111 When using array objects from code written in C or C++ (the only way to |
|
112 effectively make use of this information), it makes more sense to use the buffer |
|
113 interface supported by array objects. This method is maintained for backward |
|
114 compatibility and should be avoided in new code. The buffer interface is |
|
115 documented in :ref:`bufferobjects`. |
|
116 |
|
117 |
|
118 .. method:: array.byteswap() |
|
119 |
|
120 "Byteswap" all items of the array. This is only supported for values which are |
|
121 1, 2, 4, or 8 bytes in size; for other types of values, :exc:`RuntimeError` is |
|
122 raised. It is useful when reading data from a file written on a machine with a |
|
123 different byte order. |
|
124 |
|
125 |
|
126 .. method:: array.count(x) |
|
127 |
|
128 Return the number of occurrences of *x* in the array. |
|
129 |
|
130 |
|
131 .. method:: array.extend(iterable) |
|
132 |
|
133 Append items from *iterable* to the end of the array. If *iterable* is another |
|
134 array, it must have *exactly* the same type code; if not, :exc:`TypeError` will |
|
135 be raised. If *iterable* is not an array, it must be iterable and its elements |
|
136 must be the right type to be appended to the array. |
|
137 |
|
138 .. versionchanged:: 2.4 |
|
139 Formerly, the argument could only be another array. |
|
140 |
|
141 |
|
142 .. method:: array.fromfile(f, n) |
|
143 |
|
144 Read *n* items (as machine values) from the file object *f* and append them to |
|
145 the end of the array. If less than *n* items are available, :exc:`EOFError` is |
|
146 raised, but the items that were available are still inserted into the array. |
|
147 *f* must be a real built-in file object; something else with a :meth:`read` |
|
148 method won't do. |
|
149 |
|
150 |
|
151 .. method:: array.fromlist(list) |
|
152 |
|
153 Append items from the list. This is equivalent to ``for x in list: |
|
154 a.append(x)`` except that if there is a type error, the array is unchanged. |
|
155 |
|
156 |
|
157 .. method:: array.fromstring(s) |
|
158 |
|
159 Appends items from the string, interpreting the string as an array of machine |
|
160 values (as if it had been read from a file using the :meth:`fromfile` method). |
|
161 |
|
162 |
|
163 .. method:: array.fromunicode(s) |
|
164 |
|
165 Extends this array with data from the given unicode string. The array must |
|
166 be a type ``'u'`` array; otherwise a :exc:`ValueError` is raised. Use |
|
167 ``array.fromstring(unicodestring.encode(enc))`` to append Unicode data to an |
|
168 array of some other type. |
|
169 |
|
170 |
|
171 .. method:: array.index(x) |
|
172 |
|
173 Return the smallest *i* such that *i* is the index of the first occurrence of |
|
174 *x* in the array. |
|
175 |
|
176 |
|
177 .. method:: array.insert(i, x) |
|
178 |
|
179 Insert a new item with value *x* in the array before position *i*. Negative |
|
180 values are treated as being relative to the end of the array. |
|
181 |
|
182 |
|
183 .. method:: array.pop([i]) |
|
184 |
|
185 Removes the item with the index *i* from the array and returns it. The optional |
|
186 argument defaults to ``-1``, so that by default the last item is removed and |
|
187 returned. |
|
188 |
|
189 |
|
190 .. method:: array.read(f, n) |
|
191 |
|
192 .. deprecated:: 1.5.1 |
|
193 Use the :meth:`fromfile` method. |
|
194 |
|
195 Read *n* items (as machine values) from the file object *f* and append them to |
|
196 the end of the array. If less than *n* items are available, :exc:`EOFError` is |
|
197 raised, but the items that were available are still inserted into the array. |
|
198 *f* must be a real built-in file object; something else with a :meth:`read` |
|
199 method won't do. |
|
200 |
|
201 |
|
202 .. method:: array.remove(x) |
|
203 |
|
204 Remove the first occurrence of *x* from the array. |
|
205 |
|
206 |
|
207 .. method:: array.reverse() |
|
208 |
|
209 Reverse the order of the items in the array. |
|
210 |
|
211 |
|
212 .. method:: array.tofile(f) |
|
213 |
|
214 Write all items (as machine values) to the file object *f*. |
|
215 |
|
216 |
|
217 .. method:: array.tolist() |
|
218 |
|
219 Convert the array to an ordinary list with the same items. |
|
220 |
|
221 |
|
222 .. method:: array.tostring() |
|
223 |
|
224 Convert the array to an array of machine values and return the string |
|
225 representation (the same sequence of bytes that would be written to a file by |
|
226 the :meth:`tofile` method.) |
|
227 |
|
228 |
|
229 .. method:: array.tounicode() |
|
230 |
|
231 Convert the array to a unicode string. The array must be a type ``'u'`` array; |
|
232 otherwise a :exc:`ValueError` is raised. Use ``array.tostring().decode(enc)`` to |
|
233 obtain a unicode string from an array of some other type. |
|
234 |
|
235 |
|
236 .. method:: array.write(f) |
|
237 |
|
238 .. deprecated:: 1.5.1 |
|
239 Use the :meth:`tofile` method. |
|
240 |
|
241 Write all items (as machine values) to the file object *f*. |
|
242 |
|
243 When an array object is printed or converted to a string, it is represented as |
|
244 ``array(typecode, initializer)``. The *initializer* is omitted if the array is |
|
245 empty, otherwise it is a string if the *typecode* is ``'c'``, otherwise it is a |
|
246 list of numbers. The string is guaranteed to be able to be converted back to an |
|
247 array with the same type and value using :func:`eval`, so long as the |
|
248 :func:`array` function has been imported using ``from array import array``. |
|
249 Examples:: |
|
250 |
|
251 array('l') |
|
252 array('c', 'hello world') |
|
253 array('u', u'hello \u2641') |
|
254 array('l', [1, 2, 3, 4, 5]) |
|
255 array('d', [1.0, 2.0, 3.14]) |
|
256 |
|
257 |
|
258 .. seealso:: |
|
259 |
|
260 Module :mod:`struct` |
|
261 Packing and unpacking of heterogeneous binary data. |
|
262 |
|
263 Module :mod:`xdrlib` |
|
264 Packing and unpacking of External Data Representation (XDR) data as used in some |
|
265 remote procedure call systems. |
|
266 |
|
267 `The Numerical Python Manual <http://numpy.sourceforge.net/numdoc/HTML/numdoc.htm>`_ |
|
268 The Numeric Python extension (NumPy) defines another array type; see |
|
269 http://numpy.sourceforge.net/ for further information about Numerical Python. |
|
270 (A PDF version of the NumPy manual is available at |
|
271 http://numpy.sourceforge.net/numdoc/numdoc.pdf). |
|
272 |