все Python 3itertoolsфункция
itertools.compress
itertools
Отбирает элементы data, где соответствующий элемент selectors истинен.
Синтаксис
itertools.compress(data, selectors)
Останавливается на более коротком из двух аргументов, лишний хвост игнорируется. Удобен, когда булева маска уже посчитана заранее (например, другим фильтром) и её хочется переиспользовать — читается чище, чем comprehension с zip; selectors — любые истинные или ложные значения, не обязательно 0 и 1.
Примеры
import itertools
print(list(itertools.compress(['a', 'b', 'c', 'd'], [1, 0, 1, 0]))) # → ['a', 'c']
nums = [5, 12, 7, 20]
print(list(itertools.compress(nums, [n > 10 for n in nums]))) # → [12, 20]
print(list(itertools.compress([1, 2, 3], [1, 1]))) # → [1, 2]
print(list(itertools.compress(['a', 'b', 'c'], ['', 'x', None]))) # → ['b']
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности