我想知道,如何递增表示二进制数的字符串,一直增加到另一个二进制数? (例如,用于 while 循环)。
例如,我从“0000”开始,在 15 个 incs 之后,我应该到达“1111”(换句话说:“0000”、“0001”、“0010”、...、“1111”)。起初这个问题看起来很简单,但我能想到的唯一解决方案非常荒谬(不是 pythonic,有些人可能会说)。有人有什么建议吗?
提前致谢!
请您参考如下方法:
要执行您真正要求的操作,您应该转换为整数,加一,然后再改回二进制。
x = to_binary(int(x, 2) + 1)
您可能会发现 bin 内置方法在实现 to_binary 时很有用,尽管您需要稍微修改其输出以匹配您想要的结果。
不过,如果可能的话,最好不要来回转换:只存储一个整数,然后在需要显示时将其转换为二进制。
仔细阅读您的问题后,您似乎只想生成字符串 '0000'、'0001'、'0010 ' 等。如果这是正确的,那么我建议使用 itertools.product .
例子:
import itertools
for x in map(''.join, itertools.product('01', repeat=4)):
print x
0000
0001
0010
...
在线查看它:ideone
