タプルオブジェクト—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/c-api/tuple
移動先:案内検索

タプルオブジェクト

type PyTupleObject
PyObject のこのサブタイプは、Pythonタプルオブジェクトを表します。
PyTypeObject PyTuple_Type
PyTypeObject のこのインスタンスは、Pythonタプルタイプを表します。 Pythonレイヤーのtupleおよびtypes.TupleTypeと同じオブジェクトです。
int PyTuple_Check(PyObject *p)

p がタプルオブジェクトまたはタプルタイプのサブタイプのインスタンスである場合、trueを返します。

バージョン2.2で変更:サブタイプの受け入れを許可しました。

int PyTuple_CheckExact(PyObject *p)

p がタプルオブジェクトであるが、タプルタイプのサブタイプのインスタンスではない場合はtrueを返します。

バージョン2.2の新機能。

PyObject *PyTuple_New(Py_ssize_t len)

失敗した場合は、サイズ len または NULL の新しいタプルオブジェクトを返します。

バージョン2.5で変更:この関数は、 lenintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PyTuple_Pack(Py_ssize_t n, ...)

失敗した場合は、サイズ n または NULL の新しいタプルオブジェクトを返します。 タプル値は、Pythonオブジェクトを指す後続の n C引数に初期化されます。 PyTuple_Pack(2, a, b)Py_BuildValue("(OO)", a, b)と同等です。

バージョン2.4の新機能。

バージョン2.5で変更:この関数は、 nintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

Py_ssize_t PyTuple_Size(PyObject *p)

タプルオブジェクトへのポインタを取り、そのタプルのサイズを返します。

バージョン2.5で変更:この関数はintタイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

Py_ssize_t PyTuple_GET_SIZE(PyObject *p)

タプル p のサイズを返します。これは NULL 以外であり、タプルを指している必要があります。 エラーチェックは実行されません。

バージョン2.5で変更:この関数はintタイプを返しました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)

p が指すタプルの位置 pos にあるオブジェクトを返します。 pos が範囲外の場合は、 NULL を返し、IndexError例外を設定します。

バージョン2.5で変更:この関数は、 posintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)

PyTuple_GetItem()と同様ですが、引数のチェックは行いません。

バージョン2.5で変更:この関数は、 posintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)

p が指すタプルのスライスを lowhigh の間で返すか、失敗した場合は NULL を返します。 これは、Python式p[low:high]と同等です。 リストの最後からの索引付けはサポートされていません。

バージョン2.5で変更:この関数は、およびintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

p が指すタプルの位置 pos にオブジェクト o への参照を挿入します。 成功した場合は0を返します。 pos が範囲外の場合は、-1を返し、IndexError例外を設定します。

ノート

この関数は、 o への参照を「盗み」、影響を受ける位置のタプルにすでにあるアイテムへの参照を破棄します。

バージョン2.5で変更:この関数は、 posintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

void PyTuple_SET_ITEM(PyObject *p, Py_ssize_t pos, PyObject *o)

PyTuple_SetItem()と同様ですが、エラーチェックは行われないため、のみを使用して新しいタプルを入力する必要があります。

ノート

このマクロは o への参照を「盗み」、 PyTuple_SetItem()とは異なり、は置き換えられるアイテムへの参照を破棄しませんpos の位置にあるタプル内の参照がリークされます。

バージョン2.5で変更:この関数は、 posintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

int _PyTuple_Resize(PyObject **p, Py_ssize_t newsize)

タプルのサイズを変更するために使用できます。 newsize は、タプルの新しい長さになります。 タプルは不変であると想定されているため、これはオブジェクトへの参照が1つしかない場合にのみ使用する必要があります。 タプルがコードの他の部分にすでに認識されている可能性がある場合は、これを使用しないでください。 タプルは常に最後に拡大または縮小します。 これは、古いタプルを破壊して新しいタプルを作成することと考えてください。より効率的になります。 成功すると0を返します。 クライアントコードは、*pの結果の値がこの関数を呼び出す前と同じになると想定してはなりません。 *pで参照されているオブジェクトを置き換えると、元の*pは破棄されます。 失敗すると、-1を返し、*pNULL に設定し、MemoryErrorまたはSystemErrorを上げます。

バージョン2.2で変更:未使用の3番目のパラメーター last_is_sticky を削除しました。

バージョン2.5で変更:この関数は、 newsizeintタイプを使用していました。 これには、64ビットシステムを適切にサポートするためにコードの変更が必要になる場合があります。

int PyTuple_ClearFreeList()

フリーリストをクリアします。 解放されたアイテムの総数を返します。

バージョン2.6の新機能。