2024-04-19 04:35:08 发布
网友
我想列举所有可能的N长的0和1的列表:[0,1,0,0,0,1,0,…]。基本上是一个由N个元素组成的2^N长矩阵。如果N=3,我将执行以下操作:
M = [] for i in range(2): for j in range(2): for k in range(2): M.append([i,j,k])
对于任意的N(N<;20),我需要一种更简单的方法。 谢谢。你知道吗
如果你是itertools的粉丝(谁不是呢?),可以使用^{}获取二进制数字[0, 1]的重复笛卡尔积。将repeat参数设置为所需的长度。你知道吗
[0, 1]
repeat
>>> import itertools >>> length = 3 >>> for thing in itertools.product([0, 1], repeat=length): print(thing) (0, 0, 0) (0, 0, 1) (0, 1, 0) (0, 1, 1) (1, 0, 0) (1, 0, 1) (1, 1, 0) (1, 1, 1)
一般来说,如果你发现自己嵌套了很多相似的循环,那么有一个更好的解决问题的方法就是使用itertools。你知道吗
def binstr(n): if n == 0: return [""] else: rec = binstr(n-1) return ["0"+x for x in rec] + ["1"+x for x in rec]
你可以这样做
M = [] for i in range ( 1<< N ): tmp = i bit_string=[] for j in range(N): bit_string.append(tmp%2) tmp = tmp/2 M.append(bit_string)
如果你是itertools的粉丝(谁不是呢?),可以使用^{} 获取二进制数字
[0, 1]
的重复笛卡尔积。将repeat
参数设置为所需的长度。你知道吗一般来说,如果你发现自己嵌套了很多相似的循环,那么有一个更好的解决问题的方法就是使用itertools。你知道吗
你可以这样做
相关问题 更多 >
编程相关推荐