📜  Python – Itertools.compress()(1)

📅  最后修改于: 2023-12-03 15:19:03.242000             🧑  作者: Mango

Python - itertools.compress()

在Python中,如果你需要从一个iterable对象中获取特定的值,你可以使用itertools.compress()函数。

介绍

itertools.compress(iterable, selector)函数返回一个迭代器,该迭代器返回selector的值为True的iterable的元素。selector可以是bool值的序列,也可以是一个函数,接受iterable中的每个元素作为参数并返回True或False。

代码示例

让我们看看如何使用itertools.compress()函数。

首先,我们需要导入itertools模块。

import itertools

接下来,我们创建一个iterable对象:

my_list = [1, 2, 3, 4, 5]

现在,假设我们想只获取my_list中索引为0和2的元素,我们可以创建一个选择器列表:

selector = [True, False, True, False, False]

我们可以使用itertools.compress()函数将选择器列表应用于my_list:

result = itertools.compress(my_list, selector)

现在,我们可以通过for循环获取结果:

for item in result:
    print(item)

这将输出以下内容:

1
3

我们成功地获取了my_list中索引为0和2的元素。

使用函数作为选择器

选择器也可以是一个函数,该函数将每个元素作为参数并返回True或False。

例如,我们可以创建一个函数来筛选出所有偶数:

def is_even(n):
    return n % 2 == 0

我们可以使用itertools.compress()函数并将is_even函数作为选择器:

result = itertools.compress(my_list, map(is_even, my_list))

这将仅获取my_list中的偶数,输出以下内容:

for item in result:
    print(item)
2
4
总结

itertools.compress()函数是一个非常有用的工具,可以帮助你从iterable中获取特定的值。无论你是使用bool值的列表还是函数作为选择器,都可以使用itertools.compress()函数轻松地执行此操作。