##
7.2.5 List Objects

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

PyTypeObject `PyList_Type`
  This instance of `PyTypeObject` represents the Python list type. This is the same object as `types.ListType`.

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

PyObject* `PyList_New` (int len)
  Return value: New reference.
  Returns a new list of length len on success, or `NULL` on failure.

int `PyList_Size` (PyObject *list)
  Returns the length of the list object in list; this is equivalent to "`len(list)`" on a list object.

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

PyObject* `PyList_GetItem` (PyObject *list, int index)
  Return value: Borrowed reference.
  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.

PyObject* `PyList_GET_ITEM` (PyObject *list, int i)
  Return value: Borrowed reference.
  Macro form of `PyList_GetItem()` without error checking.

int `PyList_SetItem` (PyObject *list, int index, PyObject *item)
  Sets the item at index index in list to item. Note: This function ``steals'' a reference to item.

PyObject* `PyList_SET_ITEM` (PyObject *list, int i, PyObject *o)
  Return value: Borrowed reference.
  Macro form of `PyList_SetItem()` without error checking. Note: This function ``steals'' a reference 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 raises 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)
  Return value: New reference.
  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. This is equivalent to "`list.sort()`".

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

PyObject* `PyList_AsTuple` (PyObject *list)
  Return value: New reference.
  Returns a new tuple object containing the contents of list; equivalent to "`tuple(list)`".