在python中过滤二进制字符串的有效方法

时间:2014-12-23 00:30:21

标签: python-3.4 data-manipulation

我想要按模式过滤每个长二进制字符串。这是一个有效的例子:

x = b"\x00\x01\x02\x03\x04\x00\x01\x02\x03\x04"
x[1]
y = [x[i] for i in range(len(x)) if not ((i%5 == 4) or (i%5 == 3))]
bytes(y)

它工作正常,但我想知道是否有更好的方法,性能方面。我使用python 3.4,如果这很重要。

1 个答案:

答案 0 :(得分:1)

您应该创建一个生成器而不是列表:

bytes(x[i] for i in range(len(x)) if (i % 5) not in [3, 4])

而不是:

bytes([x[i] for i in range(len(x)) if (i % 5) not in [3, 4]]) # DON'T DO THIS

这将节省你的记忆(经验表明它也会更快一些)。我想不出另一种(更有效的)方法。