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