diff options
author | Raymond Hettinger <python@rcn.com> | 2008-01-22 23:25:35 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2008-01-22 23:25:35 (GMT) |
commit | 1dfde1ddc0e1980d67bd19e187252d4e52b4f7ce (patch) | |
tree | 365fcd0e0d95e4ff612ca7184d441e6184f8b203 /Modules/itertoolsmodule.c | |
parent | 86def6cb2b8d6d8c7f239795fa7af57c97a5890d (diff) | |
download | cpython-1dfde1ddc0e1980d67bd19e187252d4e52b4f7ce.zip cpython-1dfde1ddc0e1980d67bd19e187252d4e52b4f7ce.tar.gz cpython-1dfde1ddc0e1980d67bd19e187252d4e52b4f7ce.tar.bz2 |
Replace map(None, *iterables) with zip(*iterables).
Diffstat (limited to 'Modules/itertoolsmodule.c')
-rw-r--r-- | Modules/itertoolsmodule.c | 32 |
1 files changed, 1 insertions, 31 deletions
diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index d35c6b9..9e51663 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -1490,31 +1490,6 @@ imap_traverse(imapobject *lz, visitproc visit, void *arg) return 0; } -/* -imap() is an iterator version of __builtins__.map() except that it does -not have the None fill-in feature. That was intentionally left out for -the following reasons: - - 1) Itertools are designed to be easily combined and chained together. - Having all tools stop with the shortest input is a unifying principle - that makes it easier to combine finite iterators (supplying data) with - infinite iterators like count() and repeat() (for supplying sequential - or constant arguments to a function). - - 2) In typical use cases for combining itertools, having one finite data - supplier run out before another is likely to be an error condition which - should not pass silently by automatically supplying None. - - 3) The use cases for automatic None fill-in are rare -- not many functions - do something useful when a parameter suddenly switches type and becomes - None. - - 4) If a need does arise, it can be met by __builtins__.map() or by - writing: chain(iterable, repeat(None)). - - 5) Similar toolsets in Haskell and SML do not have automatic None fill-in. -*/ - static PyObject * imap_next(imapobject *lz) { @@ -1536,8 +1511,6 @@ imap_next(imapobject *lz) } PyTuple_SET_ITEM(argtuple, i, val); } - if (lz->func == Py_None) - return argtuple; result = PyObject_Call(lz->func, argtuple, NULL); Py_DECREF(argtuple); return result; @@ -1547,10 +1520,7 @@ PyDoc_STRVAR(imap_doc, "imap(func, *iterables) --> imap object\n\ \n\ Make an iterator that computes the function using arguments from\n\ -each of the iterables. Like map() except that it returns\n\ -an iterator instead of a list and that it stops when the shortest\n\ -iterable is exhausted instead of filling in None for shorter\n\ -iterables."); +each of the iterables. Stops when the shortest iterable is exhausted."); static PyTypeObject imap_type = { PyVarObject_HEAD_INIT(NULL, 0) |