grant list.index() a more informative error message #7252
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 39b8b1a..dea51ed 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -2276,7 +2276,8 @@
 listindex(PyListObject *self, PyObject *args)
 {
 	Py_ssize_t i, start=0, stop=Py_SIZE(self);
-	PyObject *v;
+	PyObject *v, *format_tuple, *err_string;
+	static PyObject *err_format = NULL;
 
 	if (!PyArg_ParseTuple(args, "O|O&O&:index", &v,
 	                            _PyEval_SliceIndex, &start,
@@ -2299,7 +2300,20 @@
 		else if (cmp < 0)
 			return NULL;
 	}
-	PyErr_SetString(PyExc_ValueError, "list.index(x): x not in list");
+	if (err_format == NULL) {
+		err_format = PyString_FromString("%r is not in list");
+		if (err_format == NULL)
+			return NULL;
+	}
+	format_tuple = PyTuple_Pack(1, v);
+	if (format_tuple == NULL)
+		return NULL;
+	err_string = PyString_Format(err_format, format_tuple);
+	Py_DECREF(format_tuple);
+	if (err_string == NULL)
+		return NULL;
+	PyErr_SetObject(PyExc_ValueError, err_string);
+	Py_DECREF(err_string);
 	return NULL;
 }