用于生成n
数字的二进制数字
我这样做是为了得到16个二进制数。
n = 6 # for 6 digits
for i in xrange(16):
b = bin(i)[2:]
l = len(b)
b = str(0) * (n - l) + b
print b
结果就像这样
000000
000001
000010
000011
000100
000101
000110
000111
001000
001001
001010
001011
001100
001101
001110
001111
但我想要的是获取这些值而不在前缀中添加一系列0s
任何人都可以帮助我
感谢
答案 0 :(得分:7)
删除填充0
s。
n = 6
for i in xrange(16):
b = bin(i)[2:]
l = len(b)
#b = str(0) * (n - l) + b # <--------
print b
如果您指的是没有字符串oeprator的填充号码,请将str.format
与b
type format一起使用:
n = 6
for i in xrange(16):
print '{:0{}b}'.format(i, n)
# OR print '{:06b}'.format(i)
# OR print '{:b}'.format(i) if you want no leading 0s.
答案 1 :(得分:5)
如果您要求使用其他方法:
n = 6
for i in xrange(16):
b = bin(i)[2:].zfill(n)
print b
str.zfill(n)
在左侧用零填充字符串,使其至少长度为n
。
如果你不想要领先零:
for i in xrange(16):
b = bin(i)[2:]
print b
答案 2 :(得分:0)
您可以像下面这样一起使用列表理解和位转换: n =范围
def binary_list(n):
return ['{:0{}b}'.format(i, n) for i in range(n*n-1)]
print(binary_list(3)) -->
['000', '001', '010', '011', '100', '101', '110', '111']
或者如果要将每个数字存储在其自己的索引中,请执行以下操作:
def binary_list(n):
return [[int(j) for j in '{:0{}b}'.format(i, n)] for i in range(n*n-1)]
print(binary_list(3))--->
[[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1]]
答案 3 :(得分:0)
n = 4
for i in range(0, 2**n):
b = bin(i)[2:]
print(str(b).zfill(n))
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
n = 6
000000 000001 000010 000011 .... 111101 111110 111111
答案 4 :(得分:-1)
通过此代码,您可以生成O(2 ^ int(log(n)))时间复杂度最多为n的二进制数列表。
import math
num=25
n=int(math.log(num,2))
x=['0','1']
for i in range(1,int(n)+1):
for j in range(0,2**i):
x.append('1'+x[j])
x[j]='0'+x[j]
print(x[0:num])
输出::
['00000', '00001', '00010', '00011', '00100', '00101', '00110', '00111', '01000', '01001', '01010', '01011', '01100', '01101', '01110', '01111', '10000', '10001', '10010', '10011', '10100', '10101', '10110', '10111', '11000']
希望这会有所帮助