所以这就是我在Python中尝试的东西。
input = []
for i in range(10):
n = getBin(i, 4)
input.append(n)
print input
它给出了:
['0000', '0001', '0010', '0011', '0100',
'0101', '0110', '0111', '1000', '1001']
我需要的是:
[[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]]
答案 0 :(得分:1)
将itertools.product
与(0,1)和4次重复一起使用:
input = [list(x) for x in itertools.product((0, 1), repeat=4)]
如果您使用list
tuple
而非list
s,则可以执行以下操作:
input = list(itertools.product((0, 1), repeat=4))
或者最简单的是,无论如何你都要迭代它,没有必要把它变成list
:
input = itertools.product((0, 1), repeat=4)
最后,(0, 1)
可能是range(2)
,但这几乎不是改善
itertools.product
通常会尝试以您提供的格式返回。因此,通过提供字符串,它返回一个字符串。给它一个列表,它......几乎返回一个列表(返回一个元组)
答案 1 :(得分:1)
您的getBin
以字符串格式返回二进制数,我们将每个字符转换为int
的整数并返回一个列表。
result = [map(int, getBin(i,4)) for i in range(10)]
例如,
def getBin(number, total):
return bin(number)[2:].zfill(total)
result = [map(int, getBin(i, 4)) for i in range(10)]
print result
<强>输出强>
[[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]]