Objetos lista
*************

PyListObject

   Este subtipo de "PyObject" representa un objeto lista de Python.

PyTypeObject PyList_Type

   Esta instancia de "PyTypeObject" representa el tipo de lista de
   Python. Este es el mismo objeto que "list" en la capa de Python.

int PyList_Check(PyObject *p)

   Retorna verdadero si *p* es un objeto de lista o una instancia de
   un subtipo del tipo lista. Esta función siempre finaliza con éxito.

int PyList_CheckExact(PyObject *p)

   Retorna verdadero si *p* es un objeto lista, pero no una instancia
   de un subtipo del tipo lista. Esta función siempre finaliza con
   éxito.

PyObject* PyList_New(Py_ssize_t len)
    *Return value: New reference.*

   Retorna una nueva lista de longitud *len* en caso de éxito o "NULL"
   en caso de error.

   Nota:

     Si *len* es mayor que cero, los elementos del objeto de la lista
     retornada se establecen en "NULL". Por lo tanto, no puede
     utilizar funciones API abstractas como "PySequence_SetItem()" o
     exponer el objeto al código Python antes de configurar todos los
     elementos en un objeto real con "PyList_SetItem()".

Py_ssize_t PyList_Size(PyObject *list)

   Retorna la longitud del objeto lista en *list*; esto es equivalente
   a "len(list)" en un objeto lista.

Py_ssize_t PyList_GET_SIZE(PyObject *list)

   Forma macro de "PyList_Size()" sin comprobación de errores.

PyObject* PyList_GetItem(PyObject *list, Py_ssize_t index)
    *Return value: Borrowed reference.*

   Retorna el objeto en la posición *index* en la lista a la que
   apunta *list*. La posición no debe ser negativa; La indexación
   desde el final de la lista no es compatible. Si *index* está fuera
   de los límites (*<0 o >= len(list)*), retorna "NULL" y establece
   una excepción "IndexError".

PyObject* PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
    *Return value: Borrowed reference.*

   Forma macro de "PyList_GetItem()" sin comprobación de errores.

int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)

   Establece el elemento en el índice *index* en la lista a *item*.
   Retorna "0" en caso de éxito. Si *index* está fuera de límites,
   retorna "-1" y establece una excepción "IndexError".

   Nota:

     Esta función "roba" una referencia a *item* y descarta una
     referencia a un elemento que ya está en la lista en la posición
     afectada.

void PyList_SET_ITEM(PyObject *list, Py_ssize_t i, PyObject *o)

   Forma macro de "PyList_SetItem()" sin comprobación de errores. Esto
   normalmente solo se usa para completar nuevas listas donde no hay
   contenido anterior.

   Nota:

     Este macro "roba" una referencia a *item* y, a diferencia de
     "PyList_SetItem()", *no descarta* una referencia a ningún
     elemento que se está reemplazando; cualquier referencia en *list*
     en la posición *i* se filtrará.

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)

   Inserta el elemento *item* en la lista *list* delante del índice
   *index*. Retorna "0" si tiene éxito; retorna "-1" y establece una
   excepción si no tiene éxito. Análogo a "list.insert(index, item)".

int PyList_Append(PyObject *list, PyObject *item)

   Agrega el objeto *item* al final de la lista *list*. Retorna "0" si
   tiene éxito; retorna "-1" y establece una excepción si no tiene
   éxito. Análogo a "list.append(item)".

PyObject* PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
    *Return value: New reference.*

   Retorna una lista de los objetos en *list* que contiene los objetos
   *between*, *low* y *high*. Retorna "NULL" y establece una excepción
   si no tiene éxito. Análogo a "list[low:high]". La indexación desde
   el final de la lista no es compatible.

int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)

   Establece el segmento de *list* entre *low* y *high* para el
   contenido de *itemlist*. Análogo a "list[low:high] = itemlist". La
   lista *itemlist* puede ser "NULL", lo que indica la asignación de
   una lista vacía (eliminación de segmentos). Retorna "0" en caso de
   éxito, "-1" en caso de error. La indexación desde el final de la
   lista no es compatible.

int PyList_Sort(PyObject *list)

   Ordena los elementos de *list* en su lugar. Retorna "0" en caso de
   éxito, "-1" en caso de error. Esto es equivalente a "list.sort()".

int PyList_Reverse(PyObject *list)

   Invierte los elementos de la lista *list* en su lugar. Retorna "0"
   en caso de éxito, "-1" en caso de error. Este es el equivalente de
   "list.reverse()".

PyObject* PyList_AsTuple(PyObject *list)
    *Return value: New reference.*

   Retorna un nuevo objeto tupla que contiene el contenido de *list*;
   equivalente a "tuple(list)".
