リストオブジェクト¶
-
PyTypeObject
PyList_Type
¶ この
PyTypeObject
のインスタンスは Python のリスト型を表現します。これは Python レイヤにおけるlist
と同じオブジェクトです。
-
PyObject*
PyList_New
(Py_ssize_t len)¶ - Return value: New reference.
サイズが len 新たなリストオブジェクトを返します。失敗すると NULL を返します。
注釈
len が0より大きいとき、返されるリストオブジェクトの要素には
NULL
がセットされています。なので、PyList_SetItem()
で本当にオブジェクトをセットするまでは、Pythonコードにこのオブジェクトを渡したり、PySequence_SetItem()
のような抽象APIを利用してはいけません。
-
Py_ssize_t
PyList_GET_SIZE
(PyObject *list)¶ マクロ形式でできた
PyList_Size()
で、エラーチェックをしません。
-
PyObject*
PyList_GetItem
(PyObject *list, Py_ssize_t index)¶ - Return value: Borrowed reference.
list の指すリストオブジェクト内の、位置 index にあるオブジェクトを返します。位置は正である必要があり、リスト終端からのインデックスはサポートされていません。 index が範囲を超えている場合、 NULL を返して
IndexError
例外をセットします。
-
PyObject*
PyList_GET_ITEM
(PyObject *list, Py_ssize_t i)¶ - Return value: Borrowed reference.
マクロ形式でできた
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 をリスト list のインデックス 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)¶ - Return value: New reference.
list 内の、low から high の 間の オブジェクトからなるリストを返します。失敗すると NULL を返し、例外をセットします。
list[low:high]
に類似した機能です。ただし、Python のスライスにある負のインデックスはサポートされていません。
-
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
を返します。Python のスライスにある負のインデックスはサポートされていません。
-
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)
と同じです。
-
int
PyList_ClearFreeList
()¶ free list をクリアします。解放された要素数を返します。
バージョン 3.3 で追加.