在python列表中插入数字的二进制表示法

时间:2016-01-19 03:24:37

标签: python

我尝试做类似的事情:

x = [1001, 0111, 1111]

我目前正在尝试这样做,因为在列表arry中保存所有值(十进制),然后尝试使用以下命令将其转换为二进制表示法:

'{:04b}'.format(arry)

坚持插入一个后添加另一个元素的方法。我试图使用append()和+但是append()不会起作用,使用+将导致所有二进制格式粘合在一起,我应该如何实现这一点。 谢谢 编辑:

 x  = []
 x  = '{:04b}'.format(10)
 print(x)
 k = '{:04b}'.format(2)
 x.append(k)

给出错误:

Traceback (most recent call last):
File "append.py", line 6, in <module>
 x.append(k)
AttributeError: 'str' object has no attribute 'append'

1 个答案:

答案 0 :(得分:2)

当您将第一个元素插入列表时,您也应该使用append

x  = []
x.append('{:04b}'.format(10))
print(x)
x.append('{:04b}'.format(2))
print(x)

或者,您可以以不同的方式构建列表...例如列表理解:

x = ['{:04b}'.format(y) for y in (10, 2)]

这样可以很好地缩放到任意数量的整数。

编辑(回应评论):

如果您真的只想在列表中将某些数字格式化为二进制格式,那么可以使用简单的类轻松地完成它:

class BinFormatter(object):
    def __init__(self, v):
        self.v = v
    def __repr__(self):
        return '{:04b}'.format(self.v)

print([BinFormatter(v) for v in (10, 2)])

但是,请注意,这违反了__repr__方法的常规规范,该方法通常应尽可能提供重建对象所需的信息(在这种情况下,__repr__方法正在删除类型信息,因此您将无法获得足够的信息来重建对象。)...