输出/找到前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)
我的问题是:
你知道在Python中用其他任何方法吗?也许更快?或更短(更少的代码)?
答案 0 :(得分:5)
这个更短,不确定更快:
def binary_print(n):
print '\n'.join('{:0{}b}'.format(x, (n-1).bit_length()) for x in range(n))
使用示例:
>>> binary_print(6)
000
001
010
011
100
101
答案 1 :(得分:4)
def binary_values(n):
fmt = "{0:0"+str((n-1).bit_length())+"b}"
for i in range(n):
print fmt.format(i)
注意:(n-1).bit_length()修复了fencepost错误(否则,如果n是2的幂,则会打印1个过多的前导零)。
也可以通过展开查找来加快速度,
def binary_values(n):
fmt = ("{0:0"+str((n-1).bit_length())+"b}").format
for i in range(n):
print fmt(i)