Commit | Line | Data |
---|---|---|
6a1aa64f DV |
1 | <?xml version="1.0" encoding="utf-8" ?> |
2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
3 | ||
4 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> | |
5 | <head> | |
6 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
7 | <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" /> | |
8 | <title>MochiKit.Iter - itertools for JavaScript; iteration made HARD, and then easy</title> | |
9 | ||
10 | <link rel="stylesheet" href="../../../include/css/documentation.css" type="text/css" /> | |
11 | <script type="text/javascript" src="../../../packed/MochiKit/MochiKit.js"></script> | |
12 | <script type="text/javascript" src="../../js/toc.js"></script> | |
13 | </head> | |
14 | <body> | |
15 | <div class="document"> | |
16 | <div class="section"> | |
17 | <h1><a id="name" name="name">Name</a></h1> | |
18 | <p>MochiKit.Iter - itertools for JavaScript; iteration made HARD, and | |
19 | then easy</p> | |
20 | </div> | |
21 | <div class="section"> | |
22 | <h1><a id="synopsis" name="synopsis">Synopsis</a></h1> | |
23 | <pre class="literal-block"> | |
24 | theSum = sum(takewhile( | |
25 | partial(operator.gt, 10), | |
26 | imap( | |
27 | partial(operator.mul, 2), | |
28 | count() | |
29 | ) | |
30 | ) | |
31 | )); | |
32 | ||
33 | assert( theSum == (0 + 0 + 2 + 4 + 6 + 8) ); | |
34 | </pre> | |
35 | </div> | |
36 | <div class="section"> | |
37 | <h1><a id="description" name="description">Description</a></h1> | |
38 | <p>All of the functional programming missing from | |
39 | <a class="mochiref reference" href="Base.html">MochiKit.Base</a> lives here. The functionality in this module | |
40 | is largely inspired by Python's iteration protocol <a class="footnote-reference" href="#id4" id="id1" name="id1">[1]</a>, and the | |
41 | itertools module <a class="footnote-reference" href="#id5" id="id2" name="id2">[2]</a>.</p> | |
42 | <p>MochiKit.Iter defines a standard way to iterate over anything, that | |
43 | you can extend with <a class="mochiref reference" href="#fn-registeriterator">registerIterator</a>, or by implementing | |
44 | the <tt class="docutils literal"><span class="pre">.iter()</span></tt> or <tt class="docutils literal"><span class="pre">.__iterator__()</span></tt> (in MochiKit 1.4+) protocol. | |
45 | Iterators are lazy, so it can potentially be | |
46 | cheaper to build a filter chain of iterators than to build lots of | |
47 | intermediate arrays. Especially when the data set is very large, but | |
48 | the result is not.</p> | |
49 | </div> | |
50 | <div class="section"> | |
51 | <h1><a id="dependencies" name="dependencies">Dependencies</a></h1> | |
52 | <ul class="simple"> | |
53 | <li><a class="mochiref reference" href="Base.html">MochiKit.Base</a></li> | |
54 | </ul> | |
55 | </div> | |
56 | <div class="section"> | |
57 | <h1><a id="overview" name="overview">Overview</a></h1> | |
58 | <div class="section"> | |
59 | <h2><a id="iteration-for-javascript" name="iteration-for-javascript">Iteration for JavaScript</a></h2> | |
60 | <p>The best overview right now is in my Iteration for JavaScript <a class="footnote-reference" href="#id6" id="id3" name="id3">[3]</a> | |
61 | blog entry. This information will migrate here eventually.</p> | |
62 | </div> | |
63 | </div> | |
64 | <div class="section"> | |
65 | <h1><a id="api-reference" name="api-reference">API Reference</a></h1> | |
66 | <div class="section"> | |
67 | <h2><a id="errors" name="errors">Errors</a></h2> | |
68 | <p> | |
69 | <a name="fn-stopiteration"></a> | |
70 | <a class="mochidef reference" href="#fn-stopiteration">StopIteration</a>:</p> | |
71 | <blockquote> | |
72 | <p>The singleton <a class="mochiref reference" href="Base.html#fn-namederror">MochiKit.Base.NamedError</a> that signifies | |
73 | the end of an iterator</p> | |
74 | <dl class="docutils"> | |
75 | <dt><em>Availability</em>:</dt> | |
76 | <dd>Available in MochiKit 1.3.1+</dd> | |
77 | </dl> | |
78 | </blockquote> | |
79 | </div> | |
80 | <div class="section"> | |
81 | <h2><a id="functions" name="functions">Functions</a></h2> | |
82 | <p> | |
83 | <a name="fn-applymap"></a> | |
84 | <a class="mochidef reference" href="#fn-applymap">applymap(fun, seq[, self])</a>:</p> | |
85 | <blockquote> | |
86 | <p><tt class="docutils literal"><span class="pre">applymap(fun,</span> <span class="pre">seq)</span></tt> --> | |
87 | fun.apply(self, seq0), fun.apply(self, seq1), ...</p> | |
88 | <dl class="docutils"> | |
89 | <dt><em>Availability</em>:</dt> | |
90 | <dd>Available in MochiKit 1.3.1+</dd> | |
91 | </dl> | |
92 | </blockquote> | |
93 | <p> | |
94 | <a name="fn-chain"></a> | |
95 | <a class="mochidef reference" href="#fn-chain">chain(p, q[, ...])</a>:</p> | |
96 | <blockquote> | |
97 | <p><tt class="docutils literal"><span class="pre">chain(p,</span> <span class="pre">q,</span> <span class="pre">...)</span></tt> --> p0, p1, ... plast, q0, q1, ...</p> | |
98 | <dl class="docutils"> | |
99 | <dt><em>Availability</em>:</dt> | |
100 | <dd>Available in MochiKit 1.3.1+</dd> | |
101 | </dl> | |
102 | </blockquote> | |
103 | <p> | |
104 | <a name="fn-count"></a> | |
105 | <a class="mochidef reference" href="#fn-count">count(n=0)</a>:</p> | |
106 | <blockquote> | |
107 | <p><tt class="docutils literal"><span class="pre">count(n=0)</span></tt> --> n, n + 1, n + 2, ...</p> | |
108 | <dl class="docutils"> | |
109 | <dt><em>Availability</em>:</dt> | |
110 | <dd>Available in MochiKit 1.3.1+</dd> | |
111 | </dl> | |
112 | </blockquote> | |
113 | <p> | |
114 | <a name="fn-cycle"></a> | |
115 | <a class="mochidef reference" href="#fn-cycle">cycle(p)</a>:</p> | |
116 | <blockquote> | |
117 | <p><tt class="docutils literal"><span class="pre">cycle(p)</span></tt> --> p0, p1, ... plast, p0, p1, ...</p> | |
118 | <dl class="docutils"> | |
119 | <dt><em>Availability</em>:</dt> | |
120 | <dd>Available in MochiKit 1.3.1+</dd> | |
121 | </dl> | |
122 | </blockquote> | |
123 | <p> | |
124 | <a name="fn-dropwhile"></a> | |
125 | <a class="mochidef reference" href="#fn-dropwhile">dropwhile(pred, seq)</a>:</p> | |
126 | <blockquote> | |
127 | <p><tt class="docutils literal"><span class="pre">dropwhile(pred,</span> <span class="pre">seq)</span></tt> --> seq[n], seq[n + 1], starting when | |
128 | pred(seq[n]) fails</p> | |
129 | <dl class="docutils"> | |
130 | <dt><em>Availability</em>:</dt> | |
131 | <dd>Available in MochiKit 1.3.1+</dd> | |
132 | </dl> | |
133 | </blockquote> | |
134 | <p> | |
135 | <a name="fn-every"></a> | |
136 | <a class="mochidef reference" href="#fn-every">every(iterable, func)</a>:</p> | |
137 | <blockquote> | |
138 | <p>Return <tt class="docutils literal"><span class="pre">true</span></tt> if <tt class="docutils literal"><span class="pre">func(item)</span></tt> is <tt class="docutils literal"><span class="pre">true</span></tt> for every item in | |
139 | <tt class="docutils literal"><span class="pre">iterable</span></tt>.</p> | |
140 | <dl class="docutils"> | |
141 | <dt><em>Availability</em>:</dt> | |
142 | <dd>Available in MochiKit 1.3.1+</dd> | |
143 | </dl> | |
144 | </blockquote> | |
145 | <p> | |
146 | <a name="fn-exhaust"></a> | |
147 | <a class="mochidef reference" href="#fn-exhaust">exhaust(iterable)</a>:</p> | |
148 | <blockquote> | |
149 | <p>Exhausts an iterable without saving the results anywhere, like | |
150 | <a class="mochiref reference" href="#fn-list">list(iterable)</a> when you don't care what the output is.</p> | |
151 | <dl class="docutils"> | |
152 | <dt><em>Availability</em>:</dt> | |
153 | <dd>Available in MochiKit 1.3.1+</dd> | |
154 | </dl> | |
155 | </blockquote> | |
156 | <p> | |
157 | <a name="fn-foreach"></a> | |
158 | <a class="mochidef reference" href="#fn-foreach">forEach(iterable, func[, self])</a>:</p> | |
159 | <blockquote> | |
160 | <p>Call <tt class="docutils literal"><span class="pre">func</span></tt> for each item in <tt class="docutils literal"><span class="pre">iterable</span></tt>, and don't save the | |
161 | results.</p> | |
162 | <dl class="docutils"> | |
163 | <dt><em>Availability</em>:</dt> | |
164 | <dd>Available in MochiKit 1.3.1+</dd> | |
165 | </dl> | |
166 | </blockquote> | |
167 | <p> | |
168 | <a name="fn-groupby"></a> | |
169 | <a class="mochidef reference" href="#fn-groupby">groupby(iterable[, keyfunc])</a>:</p> | |
170 | <blockquote> | |
171 | <p>Make an iterator that returns consecutive keys and groups from the | |
172 | iterable. The key is a function computing a key value for each | |
173 | element. If not specified or is None, key defaults to an identity | |
174 | function and returns the element unchanged. Generally, the | |
175 | iterable needs to already be sorted on the same key function.</p> | |
176 | <p>The returned group is itself an iterator that shares the | |
177 | underlying iterable with <a class="mochiref reference" href="#fn-groupby">groupby()</a>. Because the source | |
178 | is shared, when the groupby object is advanced, the previous group | |
179 | is no longer visible. So, if that data is needed later, it should | |
180 | be stored as an array:</p> | |
181 | <pre class="literal-block"> | |
182 | var groups = []; | |
183 | var uniquekeys = []; | |
184 | forEach(groupby(data, keyfunc), function (key_group) { | |
185 | groups.push(list(key_group[1])); | |
186 | uniquekeys.push(key_group[0]); | |
187 | }); | |
188 | </pre> | |
189 | <p>As a convenience, <a class="mochiref reference" href="#fn-groupby_as_array">groupby_as_array()</a> is provided to | |
190 | suit the above use case.</p> | |
191 | <dl class="docutils"> | |
192 | <dt><em>Availability</em>:</dt> | |
193 | <dd>Available in MochiKit 1.3.1+</dd> | |
194 | </dl> | |
195 | </blockquote> | |
196 | <p> | |
197 | <a name="fn-groupby_as_array"></a> | |
198 | <a class="mochidef reference" href="#fn-groupby_as_array">groupby_as_array(iterable[, keyfunc])</a>:</p> | |
199 | <blockquote> | |
200 | <p>Perform the same task as <a class="mochiref reference" href="#fn-groupby">groupby()</a>, except return an | |
201 | array of arrays instead of an iterator of iterators.</p> | |
202 | <dl class="docutils"> | |
203 | <dt><em>Availability</em>:</dt> | |
204 | <dd>Available in MochiKit 1.3.1+</dd> | |
205 | </dl> | |
206 | </blockquote> | |
207 | <p> | |
208 | <a name="fn-iextend"></a> | |
209 | <a class="mochidef reference" href="#fn-iextend">iextend(lst, iterable)</a>:</p> | |
210 | <blockquote> | |
211 | <p>Just like <a class="mochiref reference" href="#fn-list">list(iterable)</a>, except it pushes results on | |
212 | <tt class="docutils literal"><span class="pre">lst</span></tt> rather than creating a new one.</p> | |
213 | <dl class="docutils"> | |
214 | <dt><em>Availability</em>:</dt> | |
215 | <dd>Available in MochiKit 1.3.1+</dd> | |
216 | </dl> | |
217 | </blockquote> | |
218 | <p> | |
219 | <a name="fn-ifilter"></a> | |
220 | <a class="mochidef reference" href="#fn-ifilter">ifilter(pred, seq)</a>:</p> | |
221 | <blockquote> | |
222 | <p><tt class="docutils literal"><span class="pre">ifilter(pred,</span> <span class="pre">seq)</span></tt> --> elements of seq where <tt class="docutils literal"><span class="pre">pred(elem)</span></tt> is | |
223 | <tt class="docutils literal"><span class="pre">true</span></tt></p> | |
224 | <dl class="docutils"> | |
225 | <dt><em>Availability</em>:</dt> | |
226 | <dd>Available in MochiKit 1.3.1+</dd> | |
227 | </dl> | |
228 | </blockquote> | |
229 | <p> | |
230 | <a name="fn-ifilterfalse"></a> | |
231 | <a class="mochidef reference" href="#fn-ifilterfalse">ifilterfalse(pred, seq)</a>:</p> | |
232 | <blockquote> | |
233 | <p><tt class="docutils literal"><span class="pre">ifilterfalse(pred,</span> <span class="pre">seq)</span></tt> --> elements of seq where | |
234 | <tt class="docutils literal"><span class="pre">pred(elem)</span></tt> is <tt class="docutils literal"><span class="pre">false</span></tt></p> | |
235 | <dl class="docutils"> | |
236 | <dt><em>Availability</em>:</dt> | |
237 | <dd>Available in MochiKit 1.3.1+</dd> | |
238 | </dl> | |
239 | </blockquote> | |
240 | <p> | |
241 | <a name="fn-imap"></a> | |
242 | <a class="mochidef reference" href="#fn-imap">imap(fun, p, q[, ...])</a>:</p> | |
243 | <blockquote> | |
244 | <p><tt class="docutils literal"><span class="pre">imap(fun,</span> <span class="pre">p,</span> <span class="pre">q,</span> <span class="pre">...)</span></tt> --> fun(p0, q0, ...), fun(p1, q1, ...), | |
245 | ...</p> | |
246 | <dl class="docutils"> | |
247 | <dt><em>Availability</em>:</dt> | |
248 | <dd>Available in MochiKit 1.3.1+</dd> | |
249 | </dl> | |
250 | </blockquote> | |
251 | <p> | |
252 | <a name="fn-islice"></a> | |
253 | <a class="mochidef reference" href="#fn-islice">islice(seq, [start,] stop[, step])</a>:</p> | |
254 | <blockquote> | |
255 | <p><tt class="docutils literal"><span class="pre">islice(seq,</span> <span class="pre">[start,]</span> <span class="pre">stop[,</span> <span class="pre">step])</span></tt> --> elements from | |
256 | seq[start:stop:step] (in Python slice syntax)</p> | |
257 | <dl class="docutils"> | |
258 | <dt><em>Availability</em>:</dt> | |
259 | <dd>Available in MochiKit 1.3.1+</dd> | |
260 | </dl> | |
261 | </blockquote> | |
262 | <p> | |
263 | <a name="fn-iter"></a> | |
264 | <a class="mochidef reference" href="#fn-iter">iter(iterable[, sentinel])</a>:</p> | |
265 | <blockquote> | |
266 | <p>Convert the given argument to an iterator (object implementing | |
267 | <tt class="docutils literal"><span class="pre">.next()</span></tt>).</p> | |
268 | <ol class="arabic simple"> | |
269 | <li>If <tt class="docutils literal"><span class="pre">iterable</span></tt> is an iterator (implements <tt class="docutils literal"><span class="pre">.next()</span></tt>), then | |
270 | it will be returned as-is.</li> | |
271 | <li>If <tt class="docutils literal"><span class="pre">iterable</span></tt> is an iterator factory (implements | |
272 | <tt class="docutils literal"><span class="pre">.iter()</span></tt>), then the result of <tt class="docutils literal"><span class="pre">iterable.iter()</span></tt> will be | |
273 | returned.</li> | |
274 | <li>If <tt class="docutils literal"><span class="pre">iterable</span></tt> is a JavaScript 1.7 iterator factory (implements | |
275 | <tt class="docutils literal"><span class="pre">.__iterable__()</span></tt>), then the result of <tt class="docutils literal"><span class="pre">iterable.__iterable__()</span></tt> | |
276 | will be returned (MochiKit 1.4+).</li> | |
277 | <li>Otherwise, the iterator factory | |
278 | <a class="mochiref reference" href="Base.html#fn-adapterregistry">MochiKit.Base.AdapterRegistry</a> is used to find a | |
279 | match.</li> | |
280 | <li>If no factory is found, it will throw <tt class="docutils literal"><span class="pre">TypeError</span></tt></li> | |
281 | </ol> | |
282 | <p>Built-in iterator factories are present for Array-like objects, | |
283 | and objects that implement the <tt class="docutils literal"><span class="pre">iterateNext</span></tt> protocol (e.g. the | |
284 | result of Mozilla's <tt class="docutils literal"><span class="pre">document.evaluate</span></tt>).</p> | |
285 | <p>When used directly, using an iterator should look like this:</p> | |
286 | <pre class="literal-block"> | |
287 | var it = iter(iterable); | |
288 | try { | |
289 | while (var o = it.next()) { | |
290 | // use o | |
291 | } | |
292 | } catch (e) { | |
293 | if (e != StopIteration) { | |
294 | throw e; | |
295 | } | |
296 | // pass | |
297 | } | |
298 | </pre> | |
299 | <p>This is ugly, so you should use the higher order functions to work | |
300 | with iterators whenever possible.</p> | |
301 | <dl class="docutils"> | |
302 | <dt><em>Availability</em>:</dt> | |
303 | <dd>Available in MochiKit 1.3.1+</dd> | |
304 | </dl> | |
305 | </blockquote> | |
306 | <p> | |
307 | <a name="fn-izip"></a> | |
308 | <a class="mochidef reference" href="#fn-izip">izip(p, q[, ...])</a>:</p> | |
309 | <blockquote> | |
310 | <p><tt class="docutils literal"><span class="pre">izip(p,</span> <span class="pre">q,</span> <span class="pre">...)</span></tt> --> [p0, q0, ...], [p1, q1, ...], ...</p> | |
311 | <dl class="docutils"> | |
312 | <dt><em>Availability</em>:</dt> | |
313 | <dd>Available in MochiKit 1.3.1+</dd> | |
314 | </dl> | |
315 | </blockquote> | |
316 | <p> | |
317 | <a name="fn-list"></a> | |
318 | <a class="mochidef reference" href="#fn-list">list(iterable)</a>:</p> | |
319 | <blockquote> | |
320 | <p>Convert <tt class="docutils literal"><span class="pre">iterable</span></tt> to a new <tt class="docutils literal"><span class="pre">Array</span></tt></p> | |
321 | <dl class="docutils"> | |
322 | <dt><em>Availability</em>:</dt> | |
323 | <dd>Available in MochiKit 1.3.1+</dd> | |
324 | </dl> | |
325 | </blockquote> | |
326 | <p> | |
327 | <a name="fn-next"></a> | |
328 | <a class="mochidef reference" href="#fn-next">next(iterator)</a>:</p> | |
329 | <blockquote> | |
330 | <p>Return <tt class="docutils literal"><span class="pre">iterator.next()</span></tt></p> | |
331 | <dl class="docutils"> | |
332 | <dt><em>Availability</em>:</dt> | |
333 | <dd>Available in MochiKit 1.3.1+</dd> | |
334 | </dl> | |
335 | </blockquote> | |
336 | <p> | |
337 | <a name="fn-range"></a> | |
338 | <a class="mochidef reference" href="#fn-range">range([start,] stop[, step])</a>:</p> | |
339 | <blockquote> | |
340 | <p>Return an iterator containing an arithmetic progression of integers.</p> | |
341 | <p><tt class="docutils literal"><span class="pre">range(i,</span> <span class="pre">j)</span></tt> returns <a class="mochiref reference" href="#fn-iter">iter([i, i + 1, i + 2, ..., j - | |
342 | 1])</a></p> | |
343 | <p><tt class="docutils literal"><span class="pre">start</span></tt> (!) defaults to <tt class="docutils literal"><span class="pre">0</span></tt>. When <tt class="docutils literal"><span class="pre">step</span></tt> is given, it | |
344 | specifies the increment (or decrement). The end point is omitted!</p> | |
345 | <p>For example, <tt class="docutils literal"><span class="pre">range(4)</span></tt> returns <a class="mochiref reference" href="#fn-iter">iter([0, 1, 2, 3])</a>. | |
346 | This iterates over exactly the valid indexes for an array of 4 | |
347 | elements.</p> | |
348 | <dl class="docutils"> | |
349 | <dt><em>Availability</em>:</dt> | |
350 | <dd>Available in MochiKit 1.3.1+</dd> | |
351 | </dl> | |
352 | </blockquote> | |
353 | <p> | |
354 | <a name="fn-reduce"></a> | |
355 | <a class="mochidef reference" href="#fn-reduce">reduce(fn, iterable[, initial])</a>:</p> | |
356 | <blockquote> | |
357 | <p>Apply <tt class="docutils literal"><span class="pre">fn(a,</span> <span class="pre">b)</span></tt> cumulatively to the items of an iterable from | |
358 | left to right, so as to reduce the iterable to a single value.</p> | |
359 | <p>For example:</p> | |
360 | <pre class="literal-block"> | |
361 | reduce(function (a, b) { return x + y; }, [1, 2, 3, 4, 5]) | |
362 | </pre> | |
363 | <p>calculates:</p> | |
364 | <pre class="literal-block"> | |
365 | ((((1 + 2) + 3) + 4) + 5). | |
366 | </pre> | |
367 | <p>If initial is given, it is placed before the items of the sequence | |
368 | in the calculation, and serves as a default when the sequence is | |
369 | empty.</p> | |
370 | <p>Note that the above example could be written more clearly as:</p> | |
371 | <pre class="literal-block"> | |
372 | reduce(operator.add, [1, 2, 3, 4, 5]) | |
373 | </pre> | |
374 | <p>Or even simpler:</p> | |
375 | <pre class="literal-block"> | |
376 | sum([1, 2, 3, 4, 5]) | |
377 | </pre> | |
378 | <dl class="docutils"> | |
379 | <dt><em>Availability</em>:</dt> | |
380 | <dd>Available in MochiKit 1.3.1+</dd> | |
381 | </dl> | |
382 | </blockquote> | |
383 | <p> | |
384 | <a name="fn-registeriteratorfactory"></a> | |
385 | <a class="mochidef reference" href="#fn-registeriteratorfactory">registerIteratorFactory(name, check, iterfactory[, override])</a>:</p> | |
386 | <blockquote> | |
387 | <p>Register an iterator factory for use with the iter function.</p> | |
388 | <p><tt class="docutils literal"><span class="pre">check</span></tt> is a <tt class="docutils literal"><span class="pre">function(a)</span></tt> that returns <tt class="docutils literal"><span class="pre">true</span></tt> if <tt class="docutils literal"><span class="pre">a</span></tt> can | |
389 | be converted into an iterator with <tt class="docutils literal"><span class="pre">iterfactory</span></tt>.</p> | |
390 | <p><tt class="docutils literal"><span class="pre">iterfactory</span></tt> is a <tt class="docutils literal"><span class="pre">function(a)</span></tt> that returns an object with a | |
391 | <tt class="docutils literal"><span class="pre">.next()</span></tt> method that returns the next value in the sequence.</p> | |
392 | <p><tt class="docutils literal"><span class="pre">iterfactory</span></tt> is guaranteed to only be called if <tt class="docutils literal"><span class="pre">check(a)</span></tt> | |
393 | returns a true value.</p> | |
394 | <p>If <tt class="docutils literal"><span class="pre">override</span></tt> is <tt class="docutils literal"><span class="pre">true</span></tt>, then it will be made the | |
395 | highest precedence iterator factory. Otherwise, the lowest.</p> | |
396 | <dl class="docutils"> | |
397 | <dt><em>Availability</em>:</dt> | |
398 | <dd>Available in MochiKit 1.3.1+</dd> | |
399 | </dl> | |
400 | </blockquote> | |
401 | <p> | |
402 | <a name="fn-repeat"></a> | |
403 | <a class="mochidef reference" href="#fn-repeat">repeat(elem[, n])</a>:</p> | |
404 | <blockquote> | |
405 | <p><tt class="docutils literal"><span class="pre">repeat(elem,</span> <span class="pre">[,n])</span></tt> --> elem, elem, elem, ... endlessly or up | |
406 | to n times</p> | |
407 | <dl class="docutils"> | |
408 | <dt><em>Availability</em>:</dt> | |
409 | <dd>Available in MochiKit 1.3.1+</dd> | |
410 | </dl> | |
411 | </blockquote> | |
412 | <p> | |
413 | <a name="fn-reversed"></a> | |
414 | <a class="mochidef reference" href="#fn-reversed">reversed(iterable)</a>:</p> | |
415 | <blockquote> | |
416 | <p>Return a reversed array from iterable.</p> | |
417 | <dl class="docutils"> | |
418 | <dt><em>Availability</em>:</dt> | |
419 | <dd>Available in MochiKit 1.3.1+</dd> | |
420 | </dl> | |
421 | </blockquote> | |
422 | <p> | |
423 | <a name="fn-some"></a> | |
424 | <a class="mochidef reference" href="#fn-some">some(iterable, func)</a>:</p> | |
425 | <blockquote> | |
426 | <p>Return <tt class="docutils literal"><span class="pre">true</span></tt> if <tt class="docutils literal"><span class="pre">func(item)</span></tt> is <tt class="docutils literal"><span class="pre">true</span></tt> for at least one | |
427 | item in <tt class="docutils literal"><span class="pre">iterable</span></tt>.</p> | |
428 | <dl class="docutils"> | |
429 | <dt><em>Availability</em>:</dt> | |
430 | <dd>Available in MochiKit 1.3.1+</dd> | |
431 | </dl> | |
432 | </blockquote> | |
433 | <p> | |
434 | <a name="fn-sorted"></a> | |
435 | <a class="mochidef reference" href="#fn-sorted">sorted(iterable[, cmp])</a>:</p> | |
436 | <blockquote> | |
437 | <p>Return a sorted array from iterable.</p> | |
438 | <dl class="docutils"> | |
439 | <dt><em>Availability</em>:</dt> | |
440 | <dd>Available in MochiKit 1.3.1+</dd> | |
441 | </dl> | |
442 | </blockquote> | |
443 | <p> | |
444 | <a name="fn-sum"></a> | |
445 | <a class="mochidef reference" href="#fn-sum">sum(iterable, start=0)</a>:</p> | |
446 | <blockquote> | |
447 | <p>Returns the sum of a sequence of numbers plus the value of | |
448 | parameter <tt class="docutils literal"><span class="pre">start</span></tt> (with a default of 0). When the sequence is | |
449 | empty, returns start.</p> | |
450 | <p>Equivalent to:</p> | |
451 | <pre class="literal-block"> | |
452 | reduce(operator.add, iterable, start); | |
453 | </pre> | |
454 | <dl class="docutils"> | |
455 | <dt><em>Availability</em>:</dt> | |
456 | <dd>Available in MochiKit 1.3.1+</dd> | |
457 | </dl> | |
458 | </blockquote> | |
459 | <p> | |
460 | <a name="fn-takewhile"></a> | |
461 | <a class="mochidef reference" href="#fn-takewhile">takewhile(pred, seq)</a>:</p> | |
462 | <blockquote> | |
463 | <p><tt class="docutils literal"><span class="pre">takewhile(pred,</span> <span class="pre">seq)</span></tt> --> seq[0], seq[1], ... until | |
464 | pred(seq[n]) fails</p> | |
465 | <dl class="docutils"> | |
466 | <dt><em>Availability</em>:</dt> | |
467 | <dd>Available in MochiKit 1.3.1+</dd> | |
468 | </dl> | |
469 | </blockquote> | |
470 | <p> | |
471 | <a name="fn-tee"></a> | |
472 | <a class="mochidef reference" href="#fn-tee">tee(iterable, n=2)</a>:</p> | |
473 | <blockquote> | |
474 | <p><tt class="docutils literal"><span class="pre">tee(it,</span> <span class="pre">n=2)</span></tt> --> [it1, it2, it3, ... itn] splits one iterator | |
475 | into n</p> | |
476 | <dl class="docutils"> | |
477 | <dt><em>Availability</em>:</dt> | |
478 | <dd>Available in MochiKit 1.3.1+</dd> | |
479 | </dl> | |
480 | </blockquote> | |
481 | </div> | |
482 | </div> | |
483 | <div class="section"> | |
484 | <h1><a id="see-also" name="see-also">See Also</a></h1> | |
485 | <table class="docutils footnote" frame="void" id="id4" rules="none"> | |
486 | <colgroup><col class="label" /><col /></colgroup> | |
487 | <tbody valign="top"> | |
488 | <tr><td class="label"><a class="fn-backref" href="#id1" name="id4">[1]</a></td><td>The iteration protocol is described in | |
489 | PEP 234 - Iterators: <a class="reference" href="http://www.python.org/peps/pep-0234.html">http://www.python.org/peps/pep-0234.html</a></td></tr> | |
490 | </tbody> | |
491 | </table> | |
492 | <table class="docutils footnote" frame="void" id="id5" rules="none"> | |
493 | <colgroup><col class="label" /><col /></colgroup> | |
494 | <tbody valign="top"> | |
495 | <tr><td class="label"><a class="fn-backref" href="#id2" name="id5">[2]</a></td><td>Python's itertools | |
496 | module: <a class="reference" href="http://docs.python.org/lib/module-itertools.html">http://docs.python.org/lib/module-itertools.html</a></td></tr> | |
497 | </tbody> | |
498 | </table> | |
499 | <table class="docutils footnote" frame="void" id="id6" rules="none"> | |
500 | <colgroup><col class="label" /><col /></colgroup> | |
501 | <tbody valign="top"> | |
502 | <tr><td class="label"><a class="fn-backref" href="#id3" name="id6">[3]</a></td><td>Iteration in JavaScript: <a class="reference" href="http://bob.pythonmac.org/archives/2005/07/06/iteration-in-javascript/">http://bob.pythonmac.org/archives/2005/07/06/iteration-in-javascript/</a></td></tr> | |
503 | </tbody> | |
504 | </table> | |
505 | </div> | |
506 | <div class="section"> | |
507 | <h1><a id="authors" name="authors">Authors</a></h1> | |
508 | <ul class="simple"> | |
509 | <li>Bob Ippolito <<a class="reference" href="mailto:bob@redivi.com">bob@redivi.com</a>></li> | |
510 | </ul> | |
511 | </div> | |
512 | <div class="section"> | |
513 | <h1><a id="copyright" name="copyright">Copyright</a></h1> | |
514 | <p>Copyright 2005 Bob Ippolito <<a class="reference" href="mailto:bob@redivi.com">bob@redivi.com</a>>. This program is | |
515 | dual-licensed free software; you can redistribute it and/or modify it | |
516 | under the terms of the <a class="reference" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a> or the <a class="reference" href="http://www.opensource.org/licenses/afl-2.1.php">Academic Free License | |
517 | v2.1</a>.</p> | |
518 | </div> | |
519 | </div> | |
520 | ||
521 | </body> | |
522 | </html> |