return b in a
def countOf(a, b):
- "Return the number of times b occurs in a."
+ "Return the number of items in a which are, or which equal, b."
count = 0
for i in a:
- if i == b:
+ if i is b or i == b:
count += 1
return count
self.assertRaises(ZeroDivisionError, operator.countOf, BadIterable(), 1)
self.assertEqual(operator.countOf([1, 2, 1, 3, 1, 4], 3), 1)
self.assertEqual(operator.countOf([1, 2, 1, 3, 1, 4], 5), 0)
+ # is but not ==
+ nan = float("nan")
+ self.assertEqual(operator.countOf([nan, nan, 21], nan), 2)
+ # == but not is
+ self.assertEqual(operator.countOf([{}, 1, {}, 2], {}), 2)
def test_delitem(self):
operator = self.module
--- /dev/null
+Match the docstring and python implementation of :func:`~operator.countOf` to the behavior\r
+of its c implementation.\r
/*[clinic input]
_operator.countOf = _operator.indexOf
-Return the number of times b occurs in a.
+Return the number of items in a which are, or which equal, b.
[clinic start generated code]*/
static Py_ssize_t
_operator_countOf_impl(PyObject *module, PyObject *a, PyObject *b)
-/*[clinic end generated code: output=9e1623197daf3382 input=0c3a2656add252db]*/
+/*[clinic end generated code: output=9e1623197daf3382 input=93ea57f170f3f0bb]*/
{
return PySequence_Count(a, b);
}
"countOf($module, a, b, /)\n"
"--\n"
"\n"
-"Return the number of times b occurs in a.");
+"Return the number of items in a which are, or which equal, b.");
#define _OPERATOR_COUNTOF_METHODDEF \
{"countOf", (PyCFunction)(void(*)(void))_operator_countOf, METH_FASTCALL, _operator_countOf__doc__},
exit:
return return_value;
}
-/*[clinic end generated code: output=e7ed71a8c475a901 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=ed2bc172e42320d8 input=a9049054013a1b77]*/