Python的列表结构如下所示:
typedef struct {
PyObject_VAR_HEAD
PyObject **ob_item;
Py_ssize_t allocated;
} PyListObject;
为什么要使用** ob_item?我认为* ob_item已经足够了。
答案 0 :(得分:2)
因为,与使用指针创建的任何列表一样,当您添加和删除元素时,您需要更改节点指针指向的内容,而不仅仅是指向的对象的值to(只有*ob_item
才会得到; **ob_item
让你“重新指向”指针。)
请记住,列表不会包含实际对象,它包含指向它们的指针。为了能够使用指向指针的指针(如我所提到的,能够重新指定节点的指针),您需要**
。