Python 列表 - 基本二进制

Python List - basic binary

我正在尝试自学 python 并且我正在使用在线课程,目前我有点卡在一件小事上。

我正在使用 python 3.4.0。

我打算创建一个包含从 0000 到 1111 的 16 个二进制字符串的列表。到目前为止我已经这样做了,但它不起作用:

list[0000,0001,0010,0011,0100,0101,0110,0111,1000,1001,1010,1011,1100,1101,1110,1111]
print list

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

谢谢。

存在三个问题:

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

将程序更改为

my_list =["0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"]
print(my_list) 

另一个答案已经很好地解释了您的代码有什么问题。如果你想进一步改进它,同时了解一些更高级的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 to construct the list from the numbers up to 2n, formatting 每个数字的二进制表示,用零填充到总长度 n 位。

二进制数必须如何格式化?如果它只是使用 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 作为变量名,因为它是一个内置函数。

基于 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 )