我正在尝试自学python而且我正在使用在线课程,而且我现在有点困在一件小事上。
我正在使用python 3.4.0。
我打算创建一个包含16个二进制字符串的列表,从0000到1111.到目前为止,我已经完成了这个,但它不起作用:
list[0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111]
print list
你们中的任何人都可以更正代码吗?
谢谢。
答案 0 :(得分:3)
有三个问题:
将程序更改为
my_list =["0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"]
print(my_list)
答案 1 :(得分:3)
二进制数如何格式化?如果它只是使用bin
的标准python二进制字符串,那么:
list = [bin(x) for x in range(16)]
print(list)
应该足够了
如果您需要将其格式化为0001等,那么:
list = ["{0:04b}".format(x) for x in range(16)]
print(list)
一些注意事项:你错过了一个' ='在你的例子的第一行和Python 3中,print
现在是一个函数,因此它的参数需要括号。
此外,您不应该使用list
作为变量名称,因为它是内置函数。
答案 2 :(得分:1)
另一个答案已经很好地解释了你的代码有什么问题。如果你想进一步改进它,同时学习一些更高级的Python功能,你可以尝试这样的事情:
>>> n = 4
>>> lst = ["{:0{}b}".format(x, n) for x in range(2**n)]
>>> print(lst)
['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111',
'1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111']
这使用list comprehension从 2 n 的数字构建列表,formatting每个数字到其二进制表示,填充用零到 n 位的总长度。
答案 3 :(得分:1)
只是建立在Magnus和tobias的答案之上,我希望这样做是为了便于阅读:
binaryList = [format( x, "b" ).zfill( 4) for x in range( 16 )]
print( binaryList )
format( number, "b" )
会将一个数字转换为二进制版本,.zfill( 4 )
会在数字的开头添加零,以使其大小正确。
另外,如果你想调整字符串的长度,你可以像这样做,但要注意高数字,因为长度为16的组合超过65k:
lengthOfBinary = 8
binaryList = [format( x, "b" ).zfill( lengthOfBinary ) for x in range( 2**lengthOfBinary )]
print( binaryList )