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
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}
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.
48 \begin{datadesc
}{ArrayType
}
49 Type object corresponding to the objects returned by
54 Array objects support the following data items and methods:
56 \begin{memberdesc
}[array
]{typecode
}
57 The typecode character used to create the array.
60 \begin{memberdesc
}[array
]{itemsize
}
61 The length in bytes of one array item in the internal representation.
65 \begin{methoddesc
}[array
]{append
}{x
}
66 Append a new item with value
\var{x
} to the end of the array.
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.
79 \begin{methoddesc
}[array
]{byteswap
}{}
80 ``Byteswap'' all items of the array. This is only supported for
81 values which are
1,
2,
4, or
8 bytes in size; for other types of
82 values,
\exception{RuntimeError
} is raised. It is useful when reading
83 data from a file written on a machine with a different byte order.
86 \begin{methoddesc
}[array
]{count
}{x
}
87 Return the number of occurences of
\var{x
} in the array.
90 \begin{methoddesc
}[array
]{extend
}{a
}
91 Append array items from
\var{a
} to the end of the array.
94 \begin{methoddesc
}[array
]{fromfile
}{f, n
}
95 Read
\var{n
} items (as machine values) from the file object
\var{f
}
96 and append them to the end of the array. If less than
\var{n
} items
97 are available,
\exception{EOFError
} is raised, but the items that were
98 available are still inserted into the array.
\var{f
} must be a real
99 built-in file object; something else with a
\method{read()
} method won't
103 \begin{methoddesc
}[array
]{fromlist
}{list
}
104 Append items from the list. This is equivalent to
105 \samp{for x in
\var{list
}:\ a.append(x)
}
106 except that if there is a type error, the array is unchanged.
109 \begin{methoddesc
}[array
]{fromstring
}{s
}
110 Appends items from the string, interpreting the string as an
111 array of machine values (i.e. as if it had been read from a
112 file using the
\method{fromfile()
} method).
115 \begin{methoddesc
}[array
]{index
}{x
}
116 Return the smallest
\var{i
} such that
\var{i
} is the index of
117 the first occurence of
\var{x
} in the array.
120 \begin{methoddesc
}[array
]{insert
}{i, x
}
121 Insert a new item with value
\var{x
} in the array before position
125 \begin{methoddesc
}[array
]{pop
}{\optional{i
}}
126 Removes the item with the index
\var{i
} from the array and returns
127 it. The optional argument defaults to
\code{-
1}, so that by default
128 the last item is removed and returned.
131 \begin{methoddesc
}[array
]{read
}{f, n
}
133 {Use the
\method{fromfile()
} method.
}
134 Read
\var{n
} items (as machine values) from the file object
\var{f
}
135 and append them to the end of the array. If less than
\var{n
} items
136 are available,
\exception{EOFError
} is raised, but the items that were
137 available are still inserted into the array.
\var{f
} must be a real
138 built-in file object; something else with a
\method{read()
} method won't
142 \begin{methoddesc
}[array
]{remove
}{x
}
143 Remove the first occurence of
\var{x
} from the array.
146 \begin{methoddesc
}[array
]{reverse
}{}
147 Reverse the order of the items in the array.
150 \begin{methoddesc
}[array
]{tofile
}{f
}
151 Write all items (as machine values) to the file object
\var{f
}.
154 \begin{methoddesc
}[array
]{tolist
}{}
155 Convert the array to an ordinary list with the same items.
158 \begin{methoddesc
}[array
]{tostring
}{}
159 Convert the array to an array of machine values and return the
160 string representation (the same sequence of bytes that would
161 be written to a file by the
\method{tofile()
} method.)
164 \begin{methoddesc
}[array
]{write
}{f
}
166 {Use the
\method{tofile()
} method.
}
167 Write all items (as machine values) to the file object
\var{f
}.
170 When an array object is printed or converted to a string, it is
171 represented as
\code{array(
\var{typecode
},
\var{initializer
})
}. The
172 \var{initializer
} is omitted if the array is empty, otherwise it is a
173 string if the
\var{typecode
} is
\code{'c'
}, otherwise it is a list of
174 numbers. The string is guaranteed to be able to be converted back to
175 an array with the same type and value using reverse quotes
176 (
\code{``
}), so long as the
\function{array()
} function has been
177 imported using
\samp{from array import array
}. Examples:
181 array('c', 'hello world')
182 array('l',
[1,
2,
3,
4,
5])
183 array('d',
[1.0,
2.0,
3.14])
188 \seemodule{struct
}{packing and unpacking of heterogeneous binary data
}
189 \seemodule{xdrlib
}{packing and unpacking of XDR data
}
190 \seetext{The Numeric Python extension (NumPy) defines another array
191 type; see
\emph{The Numerical Python Manual
} for additional
192 information (available online at
193 \url{ftp://ftp-icf.llnl.gov/pub/python/numericalpython.pdf
}).
194 Further information about NumPy is available at
195 \url{http://www.python.org/topics/scicomp/numpy.html
}.
}