我尝试做类似的事情:
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'
答案 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__
方法正在删除类型信息,因此您将无法获得足够的信息来重建对象。)...