# リストオブジェクト

type PyListObject

  この `PyObject` のサブタイプは Python のリストオブジェクトを表現します。

PyTypeObject PyList_Type
  次に属します: Stable ABI.

  この `PyTypeObject` のインスタンスは Python のリスト型を表現します。これは Python レイヤにおける `list` と同じオブジェクトです。

int PyList_Check(PyObject *p)

  p がリストオブジェクトかリスト型のサブタイプのインスタンスである場合に真を返します。この関数は常に成功します。

int PyList_CheckExact(PyObject *p)

  p がリストオブジェクトだがリスト型のサブタイプのインスタンスでない場合に真を返します。この関数は常に成功します。

PyObject *PyList_New(Py_ssize_t len)
  戻り値: 新しい参照。 次に属します: Stable ABI.

  サイズが len 新たなリストオブジェクトを返します。 失敗すると `NULL` を返します。

  注釈

  If len is greater than zero, the returned list object's items are set to `NULL`. Thus you cannot use abstract API functions such as `PySequence_SetItem()` or expose the object to Python code before setting all items to a real object with `PyList_SetItem()`.

Py_ssize_t PyList_Size(PyObject *list)
  次に属します: Stable ABI.

  リストオブジェクト list の長さを返します; リストオブジェクトにおける `len(list)` と同じです。

Py_ssize_t PyList_GET_SIZE(PyObject *list)

  `PyList_Size()` に似ていますが、エラーチェックを行いません。

PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index)
  戻り値: 借用参照。 次に属します: Stable ABI.

  Return the object at position index in the list pointed to by list. The position must be non-negative; indexing from the end of the list is not supported. If index is out of bounds (<0 or >=len(list)), return `NULL` and set an `IndexError` exception.

PyObject *PyList_GET_ITEM(PyObject *list, Py_ssize_t i)
  戻り値: 借用参照。

  `PyList_GetItem()` に似ていますが、エラーチェックを行いません。

int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *item)
  次に属します: Stable ABI.

  リストオブジェクト内の位置 index に、オブジェクト item を挿入します。 成功した場合には `0` を返します。 index が範囲を越えている場合、 `-1` を返して `IndexError` をセットします。

  注釈

  この関数は item への参照を "盗み取り" ます。また、変更先のインデクスにすでに別の要素が入っている場合、その要素に対する参照を放棄します。

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

  `PyList_SetItem()` をマクロによる実装で、エラーチェックを行いません。このマクロは、新たなリストのまだ要素を入れたことのない位置に要素を入れるときにのみ使います。

  注釈

  このマクロは item への参照を "盗み取り" ます。また、 `PyList_SetItem()` と違って、要素の置き換えが生じても置き換えられるオブジェクトへの参照を放棄 しません ; その結果、 list 中の位置 i で参照されていたオブジェクトがメモリリークを引き起こします。

int PyList_Insert(PyObject *list, Py_ssize_t index, PyObject *item)
  次に属します: Stable ABI.

  要素 item をリスト list のインデックス index の前に挿入します。成功すると `0` を返します。失敗すると `-1` を返し、例外をセットします。`list.insert(index, item)` に類似した機能です。

int PyList_Append(PyObject *list, PyObject *item)
  次に属します: Stable ABI.

  オブジェクト item を list の末尾に追加します。成功すると `0` を返します; 失敗すると `-1` を返し、例外をセットします。`list.append(item)` に類似した機能です。

PyObject *PyList_GetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high)
  戻り値: 新しい参照。 次に属します: Stable ABI.

  list 内の、low から high までの オブジェクトからなるリストを返します。 失敗すると `NULL` を返し、例外をセットします。 `list[low:high]` に類似した機能です。 ただし、リストの末尾からのインデックスはサポートされていません。

int PyList_SetSlice(PyObject *list, Py_ssize_t low, Py_ssize_t high, PyObject *itemlist)
  次に属します: Stable ABI.

  low から high までの list のスライスを、 itemlist の内容にします。 `list[low:high] = itemlist` と類似の機能です。 itemlist は `NULL` でもよく、空リストの代入 (指定スライスの削除) になります。 成功した場合には `0` を、失敗した場合には `-1` を返します。 ただし、リストの末尾からのインデックスはサポートされていません。

int PyList_Sort(PyObject *list)
  次に属します: Stable ABI.

  list の内容をインプレースでソートします。成功した場合には `0` を、失敗した場合には `-1` を返します。`list.sort()` と同じです。

int PyList_Reverse(PyObject *list)
  次に属します: Stable ABI.

  list の要素をインプレースで反転します。成功した場合には `0` を、失敗した場合には `-1` を返します。`list.reverse()` と同じです。

PyObject *PyList_AsTuple(PyObject *list)
  戻り値: 新しい参照。 次に属します: Stable ABI.

  list の内容が入った新たなタプルオブジェクトを返します; `tuple(list)` と同じです。