# Objeto List

`PyListObject`

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

PyTypeObject `PyList_Type`

  Esta instância de `PyTypeObject` representa o tipo de lista Python. Este é o mesmo objeto que `list` na camada Python.

int `PyList_Check`(PyObject *p)

  Retorna verdadeiro se p for um objeto de lista ou uma instância de um subtipo do tipo de lista.

int `PyList_CheckExact`(PyObject *p)

  Retorna verdadeiro se p for um objeto de lista, mas não uma instância de um subtipo do tipo de lista.

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

  Retorna uma nova lista de comprimento len em caso de sucesso, ou `NULL` em caso de falha.

  Nota

  Se len for maior que zero, os itens do objeto de lista retornado são definidos como `NULL`. Portanto, você não pode usar funções API abstratas, como `PySequence_SetItem()` ou expor o objeto ao código Python antes de definir todos os itens para um objeto real com `PyList_SetItem()`.

Py_ssize_t `PyList_Size`(PyObject *list)

  Retorna o comprimento do objeto de lista em list; isto é equivalente a `len(list)` em um objeto lista.

Py_ssize_t `PyList_GET_SIZE`(PyObject *list)

  Forma macro de `PyList_Size()` sem verificação de erros.

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

  Retorna o objeto na posição index na lista apontada por list. A posição deve ser não negativa; não há suporte à indexação do final da lista. Se index estiver fora dos limites (<o ou >=len(list)), retorna `NULL` e levanta uma exceção `IndexError`.

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

  Forma macro de `PyList_GetItem()` sem verificação de erros.

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

  Define o item no índice index na lista como item. Retorna `0` em caso de sucesso. Se index estiver fora dos limites, retorna `-1` e levanta uma exceção `IndexError`.

  Nota

  Esta função “rouba” uma referência para o item e descarta uma referência para um item já presente na lista na posição afetada.

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

  Forma macro de `PyList_SetItem()` sem verificação de erro. Este é normalmente usado apenas para preencher novas listas onde não há conteúdo anterior.

  Nota

  Esta macro “rouba” uma referência para o item e, ao contrário de `PyList_SetItem()`, não descarta uma referência para nenhum item que esteja sendo substituído; qualquer referência em list será perdida.

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

  Insere o item item na lista list na frente do índice index. Retorna `0` se for bem-sucedido; retorna `-1` e levanta uma exceção se malsucedido. Análogo a `list.insert(index, item)`.

int `PyList_Append`(PyObject *list, PyObject *item)

  Adiciona o item item ao final da lista list. Retorna `0` se for bem-sucedido; retorna `-1` e levanta uma exceção se malsucedido. Análogo a `list.insert(index, item)`.

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

  Retorna uma lista dos objetos em list contendo os objetos entre low e alto. Retorne `NULL` e levanta uma exceção se malsucedido. Análogo a `list[low:high]`. Não há suporte à indexação do final da lista.

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

  Define a fatia de list entre low e high para o conteúdo de itemlist. Análogo a `list[low:high] = itemlist`. itemlist pode ser `NULL`, indicando a atribuição de uma lista vazia (exclusão de fatia). Retorna `0` em caso de sucesso, `-1` em caso de falha. Não há suporte à indexação do final da lista.

int `PyList_Sort`(PyObject *list)

  Ordena os itens de list no mesmo lugar. Retorna `0` em caso de sucesso, e `-1` em caso de falha. Isso é o equivalente de `list.sort()`.

int `PyList_Reverse`(PyObject *list)

  Inverte os itens de list no mesmo lugar. Retorna `0` em caso de sucesso, e `-1` em caso de falha. Isso é o equivalente de `list.reverse()`.

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

  Retorna um novo objeto tupla contendo os conteúdos de list; equivale a``tuple(list)``.

int `PyList_ClearFreeList`()

  Limpe a lista livre. Retorna o número total de itens liberados.

  Novo na versão 3.3.