Python列表 - 基本二进制文件

时间:2015-02-26 12:34:41

标签: python list binary

我正在尝试自学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

你们中的任何人都可以更正代码吗?

谢谢。

4 个答案:

答案 0 :(得分:3)

有三个问题:

  • 在Python 3上,print命令需要括号。
  • 您的列表未存储在任何变量中以供参考
  • 列表中的值必须是字符串。他们目前正在编号

将程序更改为

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 )