diff --git a/src/libdap-python.c b/src/libdap-python.c
index e477e23753704d160c9769628858351448b1ada8..dbe6ac15d29a723ea66e20b07b79c92ea88d4e42 100644
--- a/src/libdap-python.c
+++ b/src/libdap-python.c
@@ -120,3 +120,25 @@ PyObject* py_m_dap_config_get_item_default(PyObject *self, PyObject *args){
     const char *res = dap_config_get_item_str_default(g_config, section_path, item_name, def);
     return Py_BuildValue("s", res);
 }
+
+PyObject *dapListToPyList(dap_list_t *list ){
+    unsigned int len = dap_list_length(list);
+    PyObject *obj = PyList_New((Py_ssize_t)len);
+    for (unsigned int l = 0; l <len; l++){
+        void *data = dap_list_nth_data(list, l);
+        PyObject *obj_data = PyBytes_FromString((const char*)data);
+        PyList_Append(obj, obj_data);
+    }
+    return obj;
+}
+
+dap_list_t *pyListToDapList(PyObject *list ){
+    Py_ssize_t len = PyList_Size(list);
+    dap_list_t *dap_list = dap_list_alloc();
+    for (Py_ssize_t i = 0; i < len; i++){
+        PyObject *obj = PyList_GetItem(list, i);
+        void *data = PyBytes_AsString(obj);
+        dap_list = dap_list_append(dap_list, data);
+    }
+    return dap_list;
+}
diff --git a/src/libdap-python.h b/src/libdap-python.h
index b64b47c4666bffc2d85d7cf8547334f28425a4ae..8e10eba87f554b80c9faf472cb78d5fd9ee50385 100644
--- a/src/libdap-python.h
+++ b/src/libdap-python.h
@@ -3,6 +3,7 @@
 #include <Python.h>
 #include "dap_config.h"
 #include "dap_common.h"
+#include "dap_list.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -78,6 +79,10 @@ static PyTypeObject DapObject_DapObjectType = {
     PyType_GenericNew,         /* tp_new */
 };
 
+PyObject *dapListToPyList(dap_list_t *list);
+
+dap_list_t *pyListToDapList(PyObject *list);
+
 #ifdef  __cplusplus
 }
 #endif