如何将 Python 列表格式化为初始化的 C 数组?

无畏_傻瓜

我需要为用 C 编写的嵌入式固件生成一个查找表。在 Python 中生成值很容易,但如何以 C 编译器可接受的形式输出这些值?

例如,我想要这样的东西:

>>> a = range(0,20)
>>> print(to_c_array(a))
int table[] = {
    0, 1, 2, 3, 4, 5, 6, 7,
    8, 9, 10, 11, 12, 13, 14, 15,
    16, 17, 18, 19};
无畏_傻瓜

这是一个可以满足您要求的功能:

def to_c_array(values, ctype="float", name="table", formatter=str, colcount=8):
    # apply formatting to each element
    values = [formatter(v) for v in values]

    # split into rows with up to `colcount` elements per row
    rows = [values[i:i+colcount] for i in range(0, len(values), colcount)]

    # separate elements with commas, separate rows with newlines
    body = ',\n    '.join([', '.join(r) for r in rows])

    # assemble components into the complete string
    return '{} {}[] = {{\n    {}}};'.format(ctype, name, body)

...以及如何使用它生成伽马校正查找表的示例:

>>> gamma = 0.3
>>> N = 32
>>> values = [math.pow(float(i)/N, gamma) for i in range(N)]
>>> print(to_c_array(values, ctype='float', name='gamma', formatter=lambda x: '{:0.5f}'.format(x)))
float gamma[] = {
    0.00000, 0.35355, 0.43528, 0.49158, 0.53589, 0.57299, 0.60520, 0.63385,
    0.65975, 0.68348, 0.70543, 0.72589, 0.74509, 0.76320, 0.78036, 0.79668,
    0.81225, 0.82716, 0.84147, 0.85523, 0.86849, 0.88129, 0.89368, 0.90568,
    0.91731, 0.92862, 0.93961, 0.95031, 0.96073, 0.97090, 0.98082, 0.99052};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将数组列表格式化为json

来自分类Dev

如何将二维C#数组初始化为所有相同的值?

来自分类Dev

如何将bash数组格式化为JSON数组

来自分类Dev

如何将C中的双精度数组转换为python列表?

来自分类Dev

如何将 Python 字符串列表转换为 wchar_t 的 C 数组?

来自分类Dev

如何格式化我的数组列表的输出C#

来自分类Dev

如何将数组的对象格式化为新对象

来自分类Dev

如何将数组格式化为键:值?

来自分类Dev

如何将struct数组初始化为null?

来自分类Dev

ot如何将propertiesArray初始化为数组

来自分类Dev

在python中如何将数组/列表与数字进行比较

来自分类Dev

如何将python数组(列表)转换为CSV

来自分类Dev

如何将JSON数组转换为C#列表?

来自分类Dev

将struct数组初始化为c ++类成员

来自分类Dev

将字符数组初始化为C ++中的NULL

来自分类Dev

Frama-C将数组初始化为零规格

来自分类Dev

将 C 数组初始化为自定义字符

来自分类Dev

C# Windows 窗体 - 如何将单击方法中初始化的数组调用到窗体的其他部分

来自分类Dev

如何将数组(或元组)的数组重新格式化为高维数组

来自分类Dev

如何在C中将结构数组初始化为Global?

来自分类Dev

如何将字符串(来自n行的文件中的字符串)存储在初始化为唯一指针的动态数组中?C ++

来自分类Dev

Rails Jbuilder:如何将一项的数组格式化为JSON数组?

来自分类Dev

如何将这个数组数组格式化为pandas数据框?

来自分类Dev

如何在数组初始化时自动格式化代码?

来自分类Dev

在Python中,如何将数值数组列表转换为简单的一维numpy数组?

来自分类Dev

在Python中,如何将数值数组列表转换为简单的一维numpy数组?

来自分类Dev

将初始化列表传递给C ++中的数组成员

来自分类Dev

SWIG:如何将复杂列表从C ++传递给python

来自分类Dev

如何将2d数组从Python传递到C?

Related 相关文章

  1. 1

    如何将数组列表格式化为json

  2. 2

    如何将二维C#数组初始化为所有相同的值?

  3. 3

    如何将bash数组格式化为JSON数组

  4. 4

    如何将C中的双精度数组转换为python列表?

  5. 5

    如何将 Python 字符串列表转换为 wchar_t 的 C 数组?

  6. 6

    如何格式化我的数组列表的输出C#

  7. 7

    如何将数组的对象格式化为新对象

  8. 8

    如何将数组格式化为键:值?

  9. 9

    如何将struct数组初始化为null?

  10. 10

    ot如何将propertiesArray初始化为数组

  11. 11

    在python中如何将数组/列表与数字进行比较

  12. 12

    如何将python数组(列表)转换为CSV

  13. 13

    如何将JSON数组转换为C#列表?

  14. 14

    将struct数组初始化为c ++类成员

  15. 15

    将字符数组初始化为C ++中的NULL

  16. 16

    Frama-C将数组初始化为零规格

  17. 17

    将 C 数组初始化为自定义字符

  18. 18

    C# Windows 窗体 - 如何将单击方法中初始化的数组调用到窗体的其他部分

  19. 19

    如何将数组(或元组)的数组重新格式化为高维数组

  20. 20

    如何在C中将结构数组初始化为Global?

  21. 21

    如何将字符串(来自n行的文件中的字符串)存储在初始化为唯一指针的动态数组中?C ++

  22. 22

    Rails Jbuilder:如何将一项的数组格式化为JSON数组?

  23. 23

    如何将这个数组数组格式化为pandas数据框?

  24. 24

    如何在数组初始化时自动格式化代码?

  25. 25

    在Python中,如何将数值数组列表转换为简单的一维numpy数组?

  26. 26

    在Python中,如何将数值数组列表转换为简单的一维numpy数组?

  27. 27

    将初始化列表传递给C ++中的数组成员

  28. 28

    SWIG:如何将复杂列表从C ++传递给python

  29. 29

    如何将2d数组从Python传递到C?

热门标签

归档