Python 用compress()过滤

  • Post category:Python

当需要对一个序列进行元素过滤时,在Python中可以使用compress()函数。该函数的作用是将一个布尔型序列作为参数,返回一个只有该序列的True位置上的元素的迭代器。下面我们来详细讲解Python中的compress()函数使用方法和相关示例。

函数原型

itertools.compress(data, selectors)

该函数的参数说明如下:

  • data:待过滤的序列;
  • selectors:布尔型序列,用来记录过滤时的元素位置;

使用示例

示例1

假设我们有一个序列data,需要将其中为True的元素选出来。

import itertools

data = [1, 2, 3, 4, 5]
selectors = [True, False, True, False, True]

result = itertools.compress(data, selectors)
for item in result:
    print(item)

输出结果:

1
3
5

以上示例中,我们使用compress()函数将data中selectors为True的元素过滤出来,最终通过迭代器输出结果。

示例2

假设我们有一个列表data,需要将其中大于等于5的元素选出来。

import itertools

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
selectors = [item >= 5 for item in data]

result = itertools.compress(data, selectors)
for item in result:
    print(item)

输出结果:

5
6
7
8
9
10

以上示例中,我们先通过列表推导式生成selectors序列,然后使用compress()函数将data中selectors为True的元素过滤出来,最终输出结果。