开发者社区> 问答> 正文

处理C语言中的可迭代对象

你想写C扩展代码处理来自任何可迭代对象如列表、元组、文件或生成器中的元素。

展开
收起
哦哦喔 2020-04-17 18:17:34 3330 0
2 条回答
写回答
取消 提交回答
  • 有点尴尬唉 你要寻找的东西已经被吃掉啦!

    下面是一个C扩展函数例子,演示了怎样处理可迭代对象中的元素: static PyObject *py_consume_iterable(PyObject *self, PyObject *args) { PyObject *obj; PyObject *iter; PyObject *item;

    if (!PyArg_ParseTuple(args, "O", &obj)) { return NULL; } if ((iter = PyObject_GetIter(obj)) == NULL) { return NULL; } while ((item = PyIter_Next(iter)) != NULL) { /* Use item */ ... Py_DECREF(item); }

    Py_DECREF(iter); return Py_BuildValue(""); }

    2020-04-19 20:54:24
    赞同 展开评论 打赏
  • 下面是一个C扩展函数例子,演示了怎样处理可迭代对象中的元素:
    
    static PyObject *py_consume_iterable(PyObject *self, PyObject *args) {
      PyObject *obj;
      PyObject *iter;
      PyObject *item;
    
      if (!PyArg_ParseTuple(args, "O", &obj)) {
        return NULL;
      }
      if ((iter = PyObject_GetIter(obj)) == NULL) {
        return NULL;
      }
      while ((item = PyIter_Next(iter)) != NULL) {
        /* Use item */
        ...
        Py_DECREF(item);
      }
    
      Py_DECREF(iter);
      return Py_BuildValue("");
    }
    
    2020-04-17 18:17:42
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载