Python中的等价表达式

2024-06-01 22:13:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个python00b,冒着问一个基本问题的风险,来吧。在

出于各种原因,我不想从Python移植到C代码中。在

在C代码中,我有一些代码可以在下面复制。在

float table[3][101][4];
int kx[6] = {0,1,0,2,1,0};
int kz[6] = {0,0,1,0,1,2};

我想要一个等效的Python表达式,用于下面的C代码:

^{pr2}$

有人能给我一个Python中的等价表达式吗?在


Tags: 代码表达式table原因floatint风险等价
2条回答

因为Python没有指针或指针算法,所以没有与C代码直接等价的代码。相反,重构代码以使用括号表示法索引到表中。在

table[kx[i]][0][lx] = 3

大概相当于C

^{pr2}$

注意,在Python表中不是连续的。尤其是,虽然这在C语言中可能有效:

px[10] = 3; // Bounds violation!

这将在Python中索引错误:

table[kx[i]][0][lx + 10] = 3

事情是这样的。。。在python中不能执行指针,因此这里显示的内容不是“可移植”的,因为:

float *px, *pz;    <  this doesn't exist
int lx = LX; /* constant defined somewhere else */
int lz = LZ; /* constant defined somewhere else */
px = &(table[kx[i]][0][0])+lx;
pz = &(table[kz[i]][0][0])+lz;
^    ^                      ^
|    |                      |
+  +           +   Therefore none of this makes any sense...

您要做的是在多维数组table中有一个指向偏移量的指针,因为在python中无法做到这一点,所以您不希望逐字“移植”此代码。在

按照这个逻辑,你用pxpz在做什么?这是您在尝试和移植时需要理解的代码。在

相关问题 更多 >