# Objetos lista

type PyListObject

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

PyTypeObject PyList_Type
  Part of the Stable ABI.

  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. Part of the Stable ABI.

  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)
  Part of the Stable ABI.

  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)

  Similar to `PyList_Size()`, but without error checking.

PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)
  Return value: Borrowed reference. Part of the Stable ABI.

  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.

  Similar to `PyList_GetItem()`, but without error checking.

int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
  Part of the Stable ABI.

  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)
  Part of the Stable ABI.

  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)
  Part of the Stable ABI.

  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. Part of the Stable ABI.

  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)
  Part of the Stable ABI.

  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)
  Part of the Stable ABI.

  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)
  Part of the Stable ABI.

  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. Part of the Stable ABI.

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