##
7.3.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_Size()` 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. Returns `0` on success or `-1` on failure. Note: This function ``steals'' a reference to item and discards a reference to an item already in the list at the affected position.

void `PyList_SET_ITEM`( | PyObject *list, int i, PyObject *o)

  Macro form of `PyList_SetItem()` without error checking. This is normally only used to fill in new lists where there is no previous content. Note: This function ``steals'' a reference to item, and, unlike `PyList_SetItem()`, does not discard a reference to any item that it being replaced; any reference in list at position i will be leaked.

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)`".