[Python-checkins] r69607 - in python/branches/py3k: Doc/library/itertools.rst Lib/test/test_itertools.py Modules/itertoolsmodule.c
raymond.hettinger
python-checkins at python.org
Sat Feb 14 05:21:49 CET 2009
Author: raymond.hettinger
Date: Sat Feb 14 05:21:49 2009
New Revision: 69607
Log:
Add keyword argument support to itertools.count().
Modified:
python/branches/py3k/Doc/library/itertools.rst
python/branches/py3k/Lib/test/test_itertools.py
python/branches/py3k/Modules/itertoolsmodule.c
Modified: python/branches/py3k/Doc/library/itertools.rst
==============================================================================
--- python/branches/py3k/Doc/library/itertools.rst (original)
+++ python/branches/py3k/Doc/library/itertools.rst Sat Feb 14 05:21:49 2009
@@ -194,15 +194,16 @@
.. versionadded:: 3.1
-.. function:: count(n=0, step=1)
+.. function:: count(start=0, step=1)
Make an iterator that returns evenly spaced values starting with *n*. Often
used as an argument to :func:`map` to generate consecutive data points.
Also, used with :func:`zip` to add sequence numbers. Equivalent to::
- def count(n=0, step=1):
+ def count(start=0, step=1):
# count(10) --> 10 11 12 13 14 ...
# count(2.5, 0.5) -> 3.5 3.0 4.5 ...
+ n = start
while True:
yield n
n += step
Modified: python/branches/py3k/Lib/test/test_itertools.py
==============================================================================
--- python/branches/py3k/Lib/test/test_itertools.py (original)
+++ python/branches/py3k/Lib/test/test_itertools.py Sat Feb 14 05:21:49 2009
@@ -355,6 +355,7 @@
self.assertEqual(lzip('abc',count(2,3)), [('a', 2), ('b', 5), ('c', 8)])
self.assertEqual(lzip('abc',count(2,0)), [('a', 2), ('b', 2), ('c', 2)])
self.assertEqual(lzip('abc',count(2,1)), [('a', 2), ('b', 3), ('c', 4)])
+ self.assertEqual(lzip('abc',count(2,3)), [('a', 2), ('b', 5), ('c', 8)])
self.assertEqual(take(20, count(maxsize-15, 3)), take(20, range(maxsize-15, maxsize+100, 3)))
self.assertEqual(take(20, count(-maxsize-15, 3)), take(20, range(-maxsize-15,-maxsize+100, 3)))
self.assertEqual(take(3, count(2, 3.25-4j)), [2, 5.25-4j, 8.5-8j])
Modified: python/branches/py3k/Modules/itertoolsmodule.c
==============================================================================
--- python/branches/py3k/Modules/itertoolsmodule.c (original)
+++ python/branches/py3k/Modules/itertoolsmodule.c Sat Feb 14 05:21:49 2009
@@ -2916,11 +2916,10 @@
Py_ssize_t cnt = 0;
PyObject *long_cnt = NULL;
PyObject *long_step = NULL;
+ static char *kwlist[] = {"start", "step", 0};
- if (type == &count_type && !_PyArg_NoKeywords("count()", kwds))
- return NULL;
-
- if (!PyArg_UnpackTuple(args, "count", 0, 2, &long_cnt, &long_step))
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "|OO:count",
+ kwlist, &long_cnt, &long_step))
return NULL;
if (long_cnt != NULL && !PyNumber_Check(long_cnt) ||
@@ -3027,10 +3026,10 @@
}
PyDoc_STRVAR(count_doc,
- "count([firstval[, step]]) --> count object\n\
+ "count([start[, step]]) --> count object\n\
\n\
Return a count object whose .__next__() method returns consecutive\n\
-integers starting from zero or, if specified, from firstval.\n\
+integers starting from zero or, if specified, from start.\n\
If step is specified, counts by that interval. Equivalent to:\n\n\
def count(firstval=0, step=1):\n\
x = firstval\n\
More information about the Python-checkins
mailing list