##
7.2.3 List Objects

`PyListObject`
  This subtype of `PyObject` represents a Python list object.

PyTypeObject `PyList_Type`
  This instance of `PyTypeObject` represents the Python list type.

int `PyList_Check` (PyObject *p)
  Returns true if its argument is a `PyListObject`.

PyObject* `PyList_New` (int size)
  Returns a new list of length len on success, and `NULL` on failure.

int `PyList_Size` (PyObject *list)
  Returns the length of the list object in list.

PyObject* `PyList_GetItem` (PyObject *list, int index)
  Returns the object at position pos in the list pointed to by p. If pos is out of bounds, returns `NULL` and sets an `IndexError` exception. Note: this function returns a ``borrowed'' reference.

int `PyList_SetItem` (PyObject *list, int index, PyObject *item)
  Sets the item at index index in list to item.

int `PyList_Insert` (PyObject *list, int index, PyObject *item)
  Inserts the item item into list list in front of index index. Returns 0 if successful; returns -1 and sets an exception if unsuccessful. Analogous to `list.insert(index, item)`.

int `PyList_Append` (PyObject *list, PyObject *item)
  Appends the object item at the end of list list. Returns 0 if successful; returns -1 and sets an exception if unsuccessful. Analogous to `list.append(item)`.

PyObject* `PyList_GetSlice` (PyObject *list, int low, int high)
  Returns a list of the objects in list containing the objects between low and high. Returns NULL and sets an exception if unsuccessful. Analogous to `list[low:high]`.

int `PyList_SetSlice` (PyObject *list, int low, int high, PyObject *itemlist)
  Sets the slice of list between low and high to the contents of itemlist. Analogous to `list[low:high]=itemlist`. Returns 0 on success, -1 on failure.

int `PyList_Sort` (PyObject *list)
  Sorts the items of list in place. Returns 0 on success, -1 on failure.

int `PyList_Reverse` (PyObject *list)
  Reverses the items of list in place. Returns 0 on success, -1 on failure.

PyObject* `PyList_AsTuple` (PyObject *list)
  Returns a new tuple object containing the contents of list.

PyObject* `PyList_GET_ITEM` (PyObject *list, int i)
  Macro form of `PyList_GetItem()` without error checking.

PyObject* `PyList_SET_ITEM` (PyObject *list, int i, PyObject *o)
  Macro form of `PyList_SetItem()` without error checking.

int `PyList_GET_SIZE` (PyObject *list)
  Macro form of `PyList_GetSize()` without error checking.