私は(ほとんど)floatのリストをboost pythonのモジュールに渡していますが、一部の要素はNoneオブジェクトです。C ++コードでは、次のようにfloatを抽出しています。
for(i=0;i<boost::python::len(list) - window_len + 1;i++) {
double value = boost::python::extract<double>(list[i]);
}
list[i]がpythonNoneオブジェクトを指している場合、これは明らかに問題があります。そういうものとして、私はこのようなものを書きました:
for(i=0;i<boost::python::len(list) - window_len + 1;i++) {
if(list[i] == NULL) continue;
double value = boost::python::extract<double>(list[i]);
}
と
for(i=0;i<boost::python::len(list) - window_len + 1;i++) {
if(list[i] == boost::python::api::object()) continue;
double value = boost::python::extract<double>(list[i]);
}
どうやらboost::python :: api :: object()はNoneと評価されるからです。ただし、これらはどちらも機能しません。Python Noneオブジェクトでそのlist[i]を確認するにはどうすればよいですか?