2014-12-23 36 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 

這將爲你節省內存(和經驗都表明它也將是一個更快一點)。我想不出另一種更有效的方法。

相關問題