从 Pybind 的列表中删除项目
Remove item from list in 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() , i, i+1, NULL);
还是我泄露了对象my_list[i]
?
我不确定你为什么不提倡@oooyaya 建议中的语法,但是删除列表中指定 index
处的元素的一种方法是使用 pop()
之类的
my_list.attr("pop")(index);
我正在将 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() , i, i+1, NULL);
还是我泄露了对象my_list[i]
?
我不确定你为什么不提倡@oooyaya 建议中的语法,但是删除列表中指定 index
处的元素的一种方法是使用 pop()
之类的
my_list.attr("pop")(index);