用Python填充5*5列表
我有一个5行5列的列表,想把它填满。这个列表就像一个表格,每个格子里可以是0或者1。我想找出所有可能的组合,总共有2的25次方种可能性。每种可能性就是在这个5*5的表格里填入0或1的不同方式。
我该怎么做呢?是用嵌套循环之类的方法吗?
2 个回答
0
你可以试试:
import itertools
gen = itertools.product((0,1),repeat=25)
创建一个生成器,来获取所有的一维组合,然后根据需要调整数据的形状。
3
我建议你从简单的开始...先试试一个1x1的list
,然后检查一下你能否显示出所有可用的组合:
[[0]]
[[1]]
接下来,试试一个2x2的list
。这里有16种不同的list
可以显示:
[[0, 0], [0, 0]]
[[0, 0], [0, 1]]
[[0, 0], [1, 0]]
[[0, 0], [1, 1]]
[[0, 1], [0, 0]]
[[0, 1], [0, 1]]
[[0, 1], [1, 0]]
[[0, 1], [1, 1]]
[[1, 0], [0, 0]]
[[1, 0], [0, 1]]
[[1, 0], [1, 0]]
[[1, 0], [1, 1]]
[[1, 1], [0, 0]]
[[1, 1], [0, 1]]
[[1, 1], [1, 0]]
[[1, 1], [1, 1]]
如果你对1x1和2x2的算法理解正确,那么你应该能把它推广到5x5的情况。
祝你好运!
更新
因为你似乎还在挣扎,这里有一些额外的帮助。
把这个问题拆分成更小的问题。我建议先从生成值开始。如果你忽略我上面例子中的list
表示法,你会发现这些值的序列是每个计算机科学家都能认出的。这在Python中也很容易生成,可以使用bin()
和str.zfill()
。
第二个问题是把这些值放进list
中。这也不难。假设你序列中的第一个值是'0000'。你知道你的list
是两行两列。你可以把前两个字符放进一个list
中,然后把这个list
放进另一个list
里。接着把下两个字符放进一个新的list
,然后把这个新list
添加到之前的list
中。完成了。对序列中的每个值重复这个过程。
希望这能帮到你。