📅  最后修改于: 2023-12-03 15:19:03.242000             🧑  作者: Mango
在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()函数轻松地执行此操作。