Update of /cvsroot/python/python/nondist/sandbox/itertools In directory sc8-pr-cvs1:/tmp/cvs-serv20327 Modified Files: itertools.c libitertools.tex test_itertools.py todo.txt Log Message: Adopted Skip's suggestion to have imap(func, *args) accept a None value for func. Reduces the conceptual distance from map(). Index: itertools.c =================================================================== RCS file: /cvsroot/python/python/nondist/sandbox/itertools/itertools.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** itertools.c 28 Jan 2003 00:19:45 -0000 1.12 --- itertools.c 28 Jan 2003 01:05:28 -0000 1.13 *************** *** 668,671 **** --- 668,676 ---- numargs = PyTuple_Size(lz->iters); + if (lz->func == Py_None) { + argtuple = PyTuple_New(numargs); + if (argtuple == NULL) + return NULL; + } for (i=0 ; i<numargs ; i++) { *************** *** 675,678 **** --- 680,685 ---- PyTuple_SET_ITEM(argtuple, i, val); } + if (lz->func == Py_None) + return argtuple; return PyObject_Call(lz->func, argtuple, NULL); } Index: libitertools.tex =================================================================== RCS file: /cvsroot/python/python/nondist/sandbox/itertools/libitertools.tex,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** libitertools.tex 28 Jan 2003 00:19:45 -0000 1.11 --- libitertools.tex 28 Jan 2003 01:05:29 -0000 1.12 *************** *** 120,127 **** \begin{funcdesc}{imap}{func, *iterables} Make an iterator that computes the function using arguments from ! each of the iterables. Like \function{map()} except 1) that it returns ! an iterator instead of a list, 2) that it stops when the shortest ! iterable is exhausted instead of filling in \code{None} for shorter ! iterables, and 3) that it does not accept \code{None} for \var{func}. Equivalent to: --- 120,128 ---- \begin{funcdesc}{imap}{func, *iterables} Make an iterator that computes the function using arguments from ! each of the iterables. If \var{func} is set to \code{None}, then ! \function{imap()} returns the arguments as a tuple. Like ! \function{map()} except that it returns an iterator instead of a ! list and that it stops when the shortest iterable is exhausted ! instead of filling in \code{None} for shorter iterables. Equivalent to: *************** *** 131,135 **** while True: args = [i.next() for i in iterables] ! yield func(*args) \end{verbatim} \end{funcdesc} --- 132,139 ---- while True: args = [i.next() for i in iterables] ! if func is None: ! yield tuple(args) ! else: ! yield func(*args) \end{verbatim} \end{funcdesc} Index: test_itertools.py =================================================================== RCS file: /cvsroot/python/python/nondist/sandbox/itertools/test_itertools.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** test_itertools.py 27 Jan 2003 23:33:26 -0000 1.7 --- test_itertools.py 28 Jan 2003 01:05:29 -0000 1.8 *************** *** 37,40 **** --- 37,42 ---- self.assertEqual(list(imap(operator.pow, range(3), range(1,7))), [0**1, 1**2, 2**3]) + self.assertEqual(list(imap(None, 'abc', range(5))), + [('a',0),('b',1),('c',2)]) self.assertRaises(TypeError, imap) self.assertRaises(TypeError, imap, operator.neg) Index: todo.txt =================================================================== RCS file: /cvsroot/python/python/nondist/sandbox/itertools/todo.txt,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** todo.txt 28 Jan 2003 00:19:45 -0000 1.11 --- todo.txt 28 Jan 2003 01:05:29 -0000 1.12 *************** *** 1,4 **** Comments from Skip and Jack: - func=None in map provide in-line motivating examples ? add default arg to times() --- 1,3 ----
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4