特殊计数

Special counting

我想用特定的方式填充 python 中的数组。一个4位数的例子是最简单的解释方式:

0000, 0001, 0010, 0100, 1000, 1001, 1010, 1100, 1101, 1110, 1111

我需要一个包含 8 位数字的列表,所以只写下来是不行的。我真的不知道该怎么做..

编辑:澄清问题。我需要第一个条目的所有数字都为 0。然后是只有一个 1 的所有可能性,然后是两个 1 的所有可能性,依此类推。最后一个条目将全部为 1。

它与您的示例中的顺序不同,我假设您不需要特定的顺序:

for i in range(256):
    print "{:08b}".format(i)

此外,我假设您需要字符串中的值,因为您指定了诸如 000001 之类的内容,并且该表达式在数字中没有意义(等于 1)。

一个简单的方法是根据它们拥有的 1 的数量对所有二进制表示进行排序。由于 python 排序是稳定的,因此 1 的个数相同的数字之间也保持原来的顺序。

sorted(('{:08b}'.format(i) for i in xrange(256)), key=lambda x: x.count('1'))