我从以下列表 s
和位掩码 b
开始:
s = ['baa', 'baa', 'black', 'sheep', 'have', 'you', 'any', 'wool']
b = [1, 0, 0, 0, 1, 1, 1, 0] # or any iterable with boolean values
我如何编写一些函数 apply_bitmask(s, b)
以便它返回
['baa', 'have', 'you', 'any']
最佳答案
Python 3.1 itertools.compress (或者 Python 2.7's 如果您还没有升级)就是这样做的(列表理解紧随其后):
import itertools
filtered = itertools.compress(s, b)
请注意,这会生成一个迭代器,而不是一个列表。节省内存,但如果您需要多次迭代它或使用索引,您始终可以使用 list(itertools.compress(s, b))
。更短。
关于python - 给定一个列表和一个位掩码,我如何返回 True 索引处的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3555375/