【发布时间】:2014-08-27 10:20:40
【问题描述】:
我尝试将 python 列表转换为 ctype 数组。但不知何故,我总是在这段代码的行中收到错误“TypeError:int期望而不是float”:
self.cValues = (ctypes.c_int * len(self.values))(*self.values)
我在几行之前创建了 self.values。这是一个普通的python列表。 我 100% 确定,len(self.values) 是一个整数,我用 type() 函数对其进行了测试,结果是类 'int'。那么这条线还有什么问题呢?感谢您的帮助。
【问题讨论】:
-
再看看你在这里粘贴的内容......它甚至不是一个有效的表达式。
-
@JeffMercado 你是什么意思?我在这里做到了:stackoverflow.com/questions/4145775/… 或者你的意思是自我?
-
好的,看到错误,我删除了。抱歉,复制粘贴失败。但这个问题还是一样。
-
我对 self.values 真正包含的内容持怀疑态度:你能打印出它的 repr() 吗?例如,如果 values 是一个整数列表,则您的表达式可以正常工作:
values = [0,1,2,3,4,5]; cValues = (ctypes.c_int * len(values))(*values)。但是,如果 values 是浮点数列表,或者与浮点数混合的整数等,它将被炸毁:values = [0,1.0,2,3,4,5]; cValues = (ctypes.c_int * len(values))(*values)得到与您发布的相同的错误。 -
列表中实际上有浮点数。我认为问题出在 len() 函数上。有没有办法用浮点数制作一个 ctype 数组?我不会打印出repr,因为数组是一个100000行的3D对象坐标数组^^
标签: python python-3.x ctypes