如何在python中填充二维数组?

时间:2014-01-30 18:44:30

标签: python multidimensional-array

重写以下C代码的pythonic方法是什么?

int a[16][4];
int s[16] = {1,0,2,3,0,1,1,3,3,2,0,2,0,3,2,1};

for (int i = 0; i < 16; ++i) {
    for (int j = 0; j < 16; ++j) {
        int diff = i ^ j;
        int val = s[i] ^ s[j];
        ++a[diff][val];
    }
}

3 个答案:

答案 0 :(得分:1)

以下是一些等效的Python代码:

a = [[0]*4 for i in range(16)]
s = [1,0,2,3,0,1,1,3,3,2,0,2,0,3,2,1]
for i in range(16):
    for j in range(16):
        diff = i ^ j
        val = s[i] ^ s[j]
        a[diff][val] += 1

答案 1 :(得分:0)

数组由

初始化
In [1]: a=[[0]*4]*16

In [2]: a
Out[2]: 
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

然后是第二个数组(列表):

In [5]: s  = [1,0,2,3,0,1,1,3,3,2,0,2,0,3,2,1]

Python中的按位运算符与C类似。正如FJ已经发布它的情况一样。

答案 2 :(得分:0)

<强>实施

a = [[0]*4 for _ in range(16)]
s = [1,0,2,3,0,1,1,3,3,2,0,2,0,3,2,1]
from itertools import product
for diff, val in ((i ^ j, s[i] ^ s[j]) 
                  for i, j in product(range(16), repeat = 2):
    a[diff][val] += 1