gpt4 book ai didi

python - 如何通过 ctypes 将列表列表从 Python 传递(非空)到 C++?

转载 作者:行者123 更新时间:2023-11-28 04:35:15 24 4
gpt4 key购买 nike

我有一些格式的数据:

data = [[1,1,1],[2,2,2],[3,3,3]]

如何通过 ctypes 将其传递给 C++?

我可以像这样单独传递每个列表:

import ctypes

temp1 = [1,1,1]
temp2 = [2,2,2]
temp3 = [3,3,3]

list1 = (ctypes.c_int * 3)(*temp1) #NO IDEA WHAT THE * MEANS
list2 = (ctypes.c_int * 3)(*temp2)
list3 = (ctypes.c_int * 3)(*temp3)

但在那之后,如果我尝试将所有这些列表附加到“数据”中......

data.append(list1)
data.append(list2)
data.append(list3)

data_final = (ctypes.?????? * 3)(*data)

我应该在 ?????? 中放入什么类型?谢谢

最佳答案

?????? 应该是 ctypes.c_int * 3 * 3

data_final = (ctypes.c_int * 3 * 3)(*data)
[list(a) for a in data_final]
# --> [[1, 1, 1], [2, 2, 2], [3, 3, 3]]

郑重声明,不要这样做

data = []
data.append(list1)
data.append(list2)
data.append(list3)

这是python,不是c++,做

data = [list1, list2, list3]

该死,因为你只是要把它传递给一个函数 do

data_final = (ctypes.c_int * 3 * 3)(list1, list2, list3)

并完全跳过数据步骤


只是为了最 pythonic 的方式,如果我在 N x M 列表列表 py_list 中有数据,我会这样做

c_array = (c_types.c_int * M * N)(*[(c_types.c_int * M)(*lst) for lst in py_list])

关于python - 如何通过 ctypes 将列表列表从 Python 传递(非空)到 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51633430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com