Python ctypes - 类型错误 : int expected instead of float

标签 python python-3.x ctypes

我尝试将 python 列表转换为 ctype 数组。但不知何故,我总是在包含以下代码的行中收到错误“TypeError:int Expected而不是float”:

    self.cValues = (ctypes.c_int * len(self.values))(*self.values)

我在几行之前创建了 self.values 。这是一个普通的 python 列表。 我百分百确定,len(self.values) 是一个整数,我用 type() 函数测试了它,结果是类“int”。那么这条线还有什么问题呢?感谢您的帮助。

最佳答案

问题不在于 len() 函数,而在于 self.values 是 float 列表而不是整数列表。尝试使用一个小的独立示例来查看:

import ctypes
values = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0]
cValues = (ctypes.c_int * len(values))(*values)

用你收到的“TypeError: int Expected而不是float”消息来轰炸。如果将值更改为整数,即 values = [0, 1, 2, 3, 4, 5] 则效果很好。或者,由于您在上一条评论中说 self.values 是 float 列表,因此您可能希望像这样使用 ctypes.c_float :

values = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0]
cValues = (ctypes.c_float * len(values))

关于Python ctypes - 类型错误 : int expected instead of float,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25517355/

相关文章:

c++ - 如何从 C++ 返回 char ** 并使用 ctypes 将其填充到 Python 列表中?

Python 以编程方式更改控制台字体大小

python - 我的脚本中处理器的使用情况可笑。如何优化呢?

Python RegEx 捕获模式后的第一个词

python - 如何创建混淆的本地密码

python - 将行插入到 Pandas DataFrame 中,同时保持列数据类型

python-3.x - 是否可以通过编程方式使用 pip 安装 python 库?

python - 如何使 pygame 沿 2 点之间的直线上的所有点绘制?

Python编码风格——多重返回语句

Python:如何从FASTA文件中的滑动窗口打印长度为n的序列?