我想从给定列表list
中选择一个数字,并从n
位表示中提取一些数字。
我知道如果我想要8位,我需要写
r = random.choice(list)
bin = "{0:08b}".format(r)
但我想做点什么
bin = "{0:0(self.n)b}".format(r)
其中n
是类成员。
我该怎么做?
答案 0 :(得分:3)
您可以使用嵌套的{…}
来定义大小:
bin = "{0:0{1}b}".format(r, self.n)
使用Py2.7 +,如果你发现更清洁,你可以省略数字:
bin = "{:0{}b}".format(r, self.n)
例如:
>>> "{:0{}b}".format(9, 8)
'00001001'
答案 1 :(得分:1)
从python3.6开始,您可以使用Literal String Interpolation,将变量名添加到字符串中。
In [81]: pad,num = 8,9
In [82]: f"{num:0{pad}b}"
Out[82]: '00001001'
使用str.format,您还可以使用名称:
In [92]: pad,num = 8,9
In [93]: "{n:0{p}b}".format(n=num, p=pad)
Out[93]: '00001001'