设置对象¶
本节详细介绍的公共API set 和 frozenset 物体。使用抽象对象协议(包括 PyObject_CallMethod() , PyObject_RichCompareBool() , PyObject_Hash() , PyObject_Repr() , PyObject_IsTrue() , PyObject_Print() 和 PyObject_GetIter() )或抽象数字协议(包括 PyNumber_And() , PyNumber_Subtract() , PyNumber_Or() , PyNumber_Xor() , PyNumber_InPlaceAnd() , PyNumber_InPlaceSubtract() , PyNumber_InPlaceOr() 和 PyNumber_InPlaceXor() )
-
type PySetObject¶
这种subtype
PyObject用于保存两者的内部数据set和frozenset物体。它就像一个PyDictObject因为它是一个固定大小的小集合(很像元组存储),它将指向一个单独的、可变大小的内存块,用于中型和大型集合(很像列表存储)。此结构的任何字段都不应被视为公共字段,并可能发生更改。所有访问都应该通过文档化的API完成,而不是通过操作结构中的值。
-
PyTypeObject PySet_Type¶
这是一个
PyTypeObject代表 Pythonset类型。
-
PyTypeObject PyFrozenSet_Type¶
这是一个
PyTypeObject代表 Pythonfrozenset类型。
以下类型检查宏用于指向任何Python对象的指针。同样,构造器函数与任何可ITerable python对象一起工作。
-
int PyAnySet_CheckExact(PyObject *p)¶
如果满足以下条件,则返回TRUE p 是一种
set对象或一个frozenset对象,而不是子类型的实例。此功能总是成功的。
-
PyObject *PySet_New(PyObject *iterable)¶
- Return value: New reference.
返回一个新的
set包含由返回的对象 可迭代的 . 这个 可迭代的 可能是NULL创建新的空集。成功时返回新集合,或NULL失败论。提高TypeError如果 可迭代的 实际上不是不可测的。构造函数对于复制集合也很有用 (c=set(s))
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- Return value: New reference.
返回一个新的
frozenset包含由返回的对象 可迭代的 . 这个 可迭代的 可能是NULL创建新的空冻结集。成功时返回新集合,或NULL失败论。提高TypeError如果 可迭代的 实际上不是不可测的。
以下函数和宏可用于 set 或 frozenset 或其子类型的实例。
-
Py_ssize_t PySet_Size(PyObject *anyset)¶
返回a的长度
set或frozenset对象。相当于len(anyset).提高PyExc_SystemError如果 任何一组 不是一个set,frozenset或子类型的实例。
-
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)¶
宏观形式
PySet_Size()没有错误检查。
-
int PySet_Contains(PyObject *anyset, PyObject *key)¶
返回
1如果找到了,0如果找不到,以及-1如果遇到错误。与 Python 不同__contains__()方法,此函数不会自动将不可显示集转换为临时冻结集。举起一个TypeError如果 key 是不可拆卸的。提高PyExc_SystemError如果 任何一组 不是一个set,frozenset或子类型的实例。
-
int PySet_Add(PyObject *set, PyObject *key)¶
添加 key 到A
set实例。也与frozenset实例(类)PyTuple_SetItem()它可以用来填充全新冻结集的值,然后再将其暴露于其他代码中)。返回0关于成功还是-1失败论。举起一个TypeError如果 key 是不可拆卸的。举起一个MemoryError如果没有生长的空间。提高SystemError如果 set 不是的实例set或其subtype。
以下函数可用于 set 或其子类型,但不适用于 frozenset 或其子类型。
-
int PySet_Discard(PyObject *set, PyObject *key)¶
返回
1如果找到并移除,0如果未找到(未采取任何措施),以及-1如果遇到错误。不提高KeyError找不到钥匙。举起一个TypeError如果 key 不可清洗。与 Python 不同discard()方法,此函数不会自动将不可显示集转换为临时冻结集。提高PyExc_SystemError如果 set 不是的实例set或其subtype。