创建一个ctypes列表

时间:2014-03-06 04:32:46

标签: python arrays ctypes

我想创建一个ctypes.c_int32的列表

我已阅读并理解List of lists changes reflected across sublists unexpectedly

无论我做什么,我都会继续创建一个c_int32实例的列表。这适用于int或浮点数或什么不适用。具体来说,我不能让ctypes工作。

f=[ctypes.c_int32]*10

但是f [0] IS f [1],所以......

f[0].value=1

也改变了f [1]。我知道它为什么这样做。我如何让它停下来。也就是说,如何使列表成为c_int32的所有唯一实例?

1 个答案:

答案 0 :(得分:0)

这是一个经典的Python错误。要解决此问题,您可以将列表创建为:

f = [ctypes.c_int32() for i in range(10)]

这将做你想要的。另一个(更干净)选项是通过以下方式创建一个ctypes数组:

f = (ctypes.c_int32 * 10)()