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

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

タプルオブジェクト

type PyTupleObject
PyObject のこのサブタイプは、Pythonタプルオブジェクトを表します。
PyTypeObject PyTuple_Type
PyTypeObject のこのインスタンスは、Pythonタプルタイプを表します。 Pythonレイヤーの tuple と同じオブジェクトです。
int PyTuple_Check(PyObject *p)
p がタプルオブジェクトまたはタプルタイプのサブタイプのインスタンスである場合、trueを返します。
int PyTuple_CheckExact(PyObject *p)
p がタプルオブジェクトであるが、タプルタイプのサブタイプのインスタンスではない場合はtrueを返します。
PyObject *PyTuple_New(Py_ssize_t len)
失敗した場合は、サイズ len またはNULLの新しいタプルオブジェクトを返します。
PyObject *PyTuple_Pack(Py_ssize_t n, ...)
失敗した場合は、サイズ n またはNULLの新しいタプルオブジェクトを返します。 タプル値は、Pythonオブジェクトを指す後続の n C引数に初期化されます。 PyTuple_Pack(2, a, b)Py_BuildValue("(OO)", a, b)と同等です。
Py_ssize_t PyTuple_Size(PyObject *p)
タプルオブジェクトへのポインタを取り、そのタプルのサイズを返します。
Py_ssize_t PyTuple_GET_SIZE(PyObject *p)
タプル p のサイズを返します。これはNULL以外であり、タプルを指している必要があります。 エラーチェックは実行されません。
PyObject *PyTuple_GetItem(PyObject *p, Py_ssize_t pos)
p が指すタプルの位置 pos にあるオブジェクトを返します。 pos が範囲外の場合は、NULLを返し、 IndexError 例外を設定します。
PyObject *PyTuple_GET_ITEM(PyObject *p, Py_ssize_t pos)
PyTuple_GetItem()と同様ですが、引数のチェックは行いません。
PyObject *PyTuple_GetSlice(PyObject *p, Py_ssize_t low, Py_ssize_t high)
p が指すタプルのスライスを lowhigh の間で返すか、失敗した場合はNULLを返します。 これは、Python式p[low:high]と同等です。 リストの最後からの索引付けはサポートされていません。
int PyTuple_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

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

ノート

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

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

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

ノート

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

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


構造体シーケンスオブジェクト

構造体シーケンスオブジェクトは、 namedtuple()オブジェクトと同等のCです。 属性を介してアイテムにアクセスできるシーケンス。 構造体シーケンスを作成するには、最初に特定の構造体シーケンスタイプを作成する必要があります。

PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
以下に説明する desc のデータから新しい構造体シーケンスタイプを作成します。 結果のタイプのインスタンスは、 PyStructSequence_New()を使用して作成できます。
void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)
desc から構造体シーケンスタイプ type を所定の位置に初期化します。
int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)

PyStructSequence_InitTypeと同じですが、成功すると0を返し、失敗すると-1を返します。

バージョン3.4の新機能。

type PyStructSequence_Desc

作成する構造体シーケンスタイプのメタ情報が含まれます。

分野

Cタイプ

意味

name

const char *

構造体シーケンスタイプの名前

doc

const char *

タイプのdocstringへのポインタまたはNULLを省略します

fields

PyStructSequence_Field *

NULLへのポインタ-新しいタイプのフィールド名を持つ終了配列

n_in_sequence

int

Python側に表示されるフィールドの数(タプルとして使用される場合)

type PyStructSequence_Field

構造体シーケンスのフィールドについて説明します。 構造体シーケンスはタプルとしてモデル化されるため、すべてのフィールドは PyObject * として入力されます。 PyStructSequence_Descfields配列のインデックスによって、構造体シーケンスのどのフィールドが記述されるかが決まります。

分野

Cタイプ

意味

name

const char *

フィールドの名前またはNULLで名前付きフィールドのリストを終了し、 PyStructSequence_UnnamedField に設定して名前なしのままにします

doc

const char *

フィールドdocstringまたはNULLを省略します

char *PyStructSequence_UnnamedField
名前を付けないままにするためのフィールド名の特別な値。
PyObject *PyStructSequence_New(PyTypeObject *type)
type のインスタンスを作成します。これは、 PyStructSequence_NewType()で作成されている必要があります。
PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
p が指す構造体シーケンスの位置 pos にあるオブジェクトを返します。 境界チェックは実行されません。
PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
PyStructSequence_GetItem()と同等のマクロ。
void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)

構造体シーケンス p のインデックス pos のフィールドを値 o に設定します。 PyTuple_SET_ITEM()と同様に、これは新しいインスタンスを入力するためにのみ使用する必要があります。

ノート

この関数は、 o への参照を「盗みます」。

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

PyStructSequence_SetItem()と同等のマクロ。

ノート

この関数は、 o への参照を「盗みます」。