如此處所示How do I convert a Python list into a C array by using ctypes?此代碼將採用python數組並將其轉換爲C數組。如何使用ctypes將列表列表的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的輸入。
這不是一個很好的解決方案。對於列表a = [[1,2,3,4],[2,3,5,6]],您可以對鍵進行arr = [(ctypes.c_int * len(key))(* key) a] –