N位数的二进制数

时间:2014-08-31 07:08:29

标签: python string python-2.7 binary

用于生成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 任何人都可以帮助我   感谢

5 个答案:

答案 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.formatb 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']

希望这会有所帮助