2014-12-23 39 views
0

我有每一个长的二进制字符串,我想按模式进行过滤。这是一个工作示例:在Python中过滤二进制字符串的有效方法

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

您可能需要创建一个发电机,而不是一个列表:

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 

这将为你节省内存(和经验都表明它也将是一个更快一点)。我想不出另一种更有效的方法。

相关问题