##
5 List Objects

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

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

int `PyList_Check`( | PyObject *p)

  引数が `PyListObject` である場合に真を返します。

PyObject* `PyList_New`( | Py_ssize_t len)

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

Py_ssize_t `PyList_Size`( | PyObject *list)

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

Py_ssize_t `PyList_GET_SIZE`( | PyObject *list)

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

PyObject* `PyList_GetItem`( | PyObject *list, Py_ssize_t index)

  戻り値: 借りた参照.
  p の指すリストオブジェクト内の、位置 pos にあるオブジェクト を返します。 位置は正である必要があり、リスとの終端からのインデックスは サポートされていません。pos が範囲を超えている場合、 `NULL` を返して `IndexError` 例外をセットします。

PyObject* `PyList_GET_ITEM`( | PyObject *list, Py_ssize_t i)

  戻り値: 借りた参照.
  マクロ形式でできた `PyList_GetItem()` で、エラーチェックを しません。

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

  リストオブジェクト内の位置 index に、オブジェクト item を挿入します。成功した場合には`0` を返し、失敗すると `-1` を返します。 注意: この関数は 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)

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

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)

  戻り値: 新たな参照.
  list 内の、low から high の 間の オブジェクト からなるリストを返します。失敗すると `NULL` を返し、 例外をセットします。 `list[low:high]` に類似した機能です。

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

  list 内の、low から high の間のオブジェクトを、 itemlist の内容にします。 `list[low:high] = itemlist` と類似の機能です。itemlist は `NULL` でもよく、空リストの 代入 (指定スライスの削除) になります。 成功した場合には `0` を、失敗した場合には `-1` を返します。

int `PyList_Sort`( | PyObject *list)

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

int `PyList_Reverse`( | PyObject *list)

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

PyObject* `PyList_AsTuple`( | PyObject *list)

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