我想要按模式过滤每个长二进制字符串。这是一个有效的例子:
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,如果这很重要。
答案 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
这将节省你的记忆(经验表明它也会更快一些)。我想不出另一种(更有效的)方法。