如此处所见,如何使用 ctypes 将 Python 列表转换为 C 数组?此代码将采用 python 数组并将其转换为 C 数组。
import ctypes
arr = (ctypes.c_int * len(pyarr))(*pyarr)
哪种方式对列表列表或列表列表执行相同操作?
例如,对于以下变量
list3d = [[[40.0, 1.2, 6.0, 0.3], [50.0, 4.2, 0, 0]], [[40.0, 1.2, 6.0, 0.3], [50.0, 4.2, 0, 0]], [[40.0, 1.2, 6.0, 0.3], [50.0, 4.2, 0, 0]]]
我试过以下没有运气:
([[ctypes.c_double * 4] *2]*3)(*list3d)
# *** TypeError: 'list' object is not callable
(ctypes.c_double * 4 *2 *3)(*list3d)
# *** TypeError: expected c_double_Array_4_Array_2 instance, got list
谢谢!
编辑:为了澄清,我试图获得一个包含整个多维数组的对象,而不是对象列表。该对象的引用将是一个需要 3D 数组的 C DLL 的输入。