从 Pybind 的列表中删除项目

问题描述

我正在将 cpython 调用移至 pybind。我有以下代码

PyObject* my_list = ...;
PyList_SetSlice(my_list,i,i+1,NULL);

用于删除项目。现在,切换到 pybind11,我有

py::list my_list = ...;

我想写一些类似的东西

my_list.pop(i);

但我没有找到任何可以做到这一点的东西。我应该怎么办?以下是否正确:

PyList_SetSlice(my_list.ptr(),NULL);

还是我泄漏了对象 my_list[i]

解决方法

我不确定您为什么不提倡@oooyaya 建议中的语法,但是删除列表中指定 index 处的元素的一种方法是使用 pop() 之类的>

my_list.attr("pop")(index);