我有一个长的一维列表,其中包含整数1和0,表示8位二进制字节。有没有一种巧妙的方法可以创建一个新列表,其中包含整数字节。
我熟悉C语言,但是对Python还很陌生,所以我编写了类似于C语言的代码:使用复杂的结构来循环遍历每个位。然而,我知道Python相对于C的优点在于这些事情通常可以简洁而优雅地完成,而且我应该学会如何做到这一点。也许可以使用列表推导式?
这可以工作,但是如果有更“Pythonic”的方式建议,将不胜感激。
我熟悉C语言,但是对Python还很陌生,所以我编写了类似于C语言的代码:使用复杂的结构来循环遍历每个位。然而,我知道Python相对于C的优点在于这些事情通常可以简洁而优雅地完成,而且我应该学会如何做到这一点。也许可以使用列表推导式?
这可以工作,但是如果有更“Pythonic”的方式建议,将不胜感激。
#!/usr/bin/env python2
bits = [1,0,0,1,0,1,0,1,0,1,1,0,1,0,1,1,1,1,1,0,0,1,1,1]
bytes = []
byt = ""
for bit in bits:
byt += str(bit)
if len(byt) == 8:
bytes += [int(byt, 2)]
byt = ""
print bytes
$ bits-to-bytes.py
[149, 107, 231]
grouper()
:)。 - Cyphasezip()
会在最短的序列上停止。 - Sven Marnach