# リストオブジェクト

`PyListObject`

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

PyTypeObject `PyList_Type`

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

int `PyList_Check`(PyObject *p)

  p がリストオブジェクトか、リスト型のサブタイプのインスタンスである場合に真を返します。

  バージョン 2.2 で変更: サブタイプを引数にとれるようになりました.

int `PyList_CheckExact`(PyObject *p)

  p がリスト型オブジェクトであり、かつリスト型のサブクラスのインスタンスでない場合に真を返します。

  バージョン 2.2 で追加.

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

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

  注釈

  len が0より大きいとき、返されるリストオブジェクトの要素には `NULL` がセットされています。なので、 `PyList_SetItem()` で本当にオブジェクトをセットするまでは、Pythonコードにこのオブジェクトを渡したり、 `PySequence_SetItem()` のような抽象APIを利用してはいけません。

  バージョン 2.5 で変更: この関数は以前は size の型に `int` を利用していました。この変更により、 64bit システムを正しくサポートするには修正が必要になります。

Py_ssize_t `PyList_Size`(PyObject *list)

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

  バージョン 2.5 で変更: この関数は以前は `int` を返していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

Py_ssize_t `PyList_GET_SIZE`(PyObject *list)

  マクロ形式でできた `PyList_Size()` で、エラーチェックをしません。

  バージョン 2.5 で変更: このマクロは以前は `int` を返していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

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

  list の指すリストオブジェクト内の、位置 index にあるオブジェクトを返します。 位置は非負である必要があり、リスト終端からのインデックスはサポートされていません。 index が範囲を超えている場合、 NULL を返して `IndexError` 例外をセットします。

  バージョン 2.5 で変更: この関数は以前は index の型に `int` を利用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

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

  マクロ形式でできた `PyList_GetItem()` で、エラーチェックをしません。

  バージョン 2.5 で変更: このマクロは以前は i の型に `int` を利用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

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

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

  注釈

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

  バージョン 2.5 で変更: この関数は以前は index の型に `int` を利用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

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

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

  注釈

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

  バージョン 2.5 で変更: このマクロは以前は i の型に `int` を利用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

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

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

  バージョン 2.5 で変更: この関数は以前は index の型に `int` を利用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

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

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

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

  Return a list of the objects in list containing the objects between low and high. Return NULL and set an exception if unsuccessful. Analogous to `list[low:high]`. Indexing from the end of the list is not supported.

  バージョン 2.5 で変更: この関数は以前は low と high に `int *` 型を使用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

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

  Set the slice of list between low and high to the contents of itemlist. Analogous to `list[low:high] = itemlist`. The itemlist may be NULL, indicating the assignment of an empty list (slice deletion). Return `0` on success, `-1` on failure. Indexing from the end of the list is not supported.

  バージョン 2.5 で変更: この関数は以前は low と high に `int *` 型を使用していました。この変更により、 64 bit システムを正しくサポートするには修正が必要になります。

int `PyList_Sort`(PyObject *list)

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

int `PyList_Reverse`(PyObject *list)

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

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

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