在python中返回一个特定的矩阵

时间:2013-10-30 17:55:04

标签: python

伙计们,我对编程完全陌生......这是我的代码 问题是如何生成这个矩阵

[([1,0,0,0]) , ([0,0,1,1]) , ([0,1,0,0]) , ([1,1,0,0])
 ([1,0,1,0]) , ([1,0,0,1]) , ([0,0,0,0]) , ([1,0,1,1])
 ([0,1,1,1]) , [(0,1,0,1]) , ([0,0,0,1]) , ([1,1,0,1])
 ([0,0,1,0]) , ([0,1,1,0]) , ([1,1,1,0]) , ([1,1,1,1])

任何帮助请????

3 个答案:

答案 0 :(得分:1)

bins = [map(int,"{0:04b}".format(i)) for i in range(16)]
matrix = [bins[i:i+4] for i in range(0,len(bins),4)]

喜欢那个??

确定更容易理解版本。首先开始的事实是你有4个槽,每个槽的选择在0/1之间,为你提供2 ^ 4个潜在的组合...我们可以使用嵌套循环来迭代所有的可能性

for bit0 in [0,1]:
  for bit1 in [0,1]:
      for bit2 in [0,1]:
         for bit3 in [0,1]:
             my_binary_list.append([bit0,bit1,bit2,bit3])

这给了我们所有问题的排列,剩下的就是把它分成4个小组

for i in range(0,16,4):
    matrix.append(my_binary_list[i:i+4])

答案 1 :(得分:1)

你的意思是简单的python吗?

m = list()
for i in range(0,4) :
    m.append(list())
    for j in range(0,4) :
        a1 = i/2%2
        a2 = i%2
        b1 = j/2%2
        b2 = j%2
        m[i].append(list())
        m[i][j].append(a1)
        m[i][j].append(a2)
        m[i][j].append(b1)
        m[i][j].append(b1)

print(m)
PS:我个人很喜欢Joran的回答。

答案 2 :(得分:0)

如果这是作业......这对你没有帮助。

但最简单的方法是使用itertools.product:

itertools.product([0,1], [0,1], [0,1], [0,1])

或略短但不易阅读:

itertools.product(*[[0,1]]*4)