自然二进制代码 - 找到前n个数字

Mac*_*rko 1 python binary

输出/查找前n个天然二进制代码:

import math  
def binary_print(n):
    m = int(math.ceil(math.log(n, 2)))
    for i in range(n):
        b = str(bin(i)[2:])
        print((m - len(b)) * '0' + b)
Run Code Online (Sandbox Code Playgroud)

我的问题是:

你知道在Python中用其他任何方法吗?也许更快?或更短(更少的代码)?

Sco*_*ths 5

那么这个更短,不确定更快:

def binary_print(n):
    print '\n'.join('{:0{}b}'.format(x, (n-1).bit_length()) for x in range(n))
Run Code Online (Sandbox Code Playgroud)

用法示例:

>>> binary_print(6)
000
001
010
011
100
101
Run Code Online (Sandbox Code Playgroud)