说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
itertools.compress() 是 Python itertools 模块中的一个函数,用于过滤一个可迭代对象的元素。它根据另一个布尔选择器可迭代对象,保留原可迭代对象中对应位置为 True 的元素。
语法为itertools.compress(data, selectors)
创建一个迭代器,它返回 data 中经 selectors 真值测试为 True 的元素。迭代器在两者较短的长度处停止。
参数:
返回一个迭代器,仅包含 data 中对应 selectors 为 True 的元素。
大致相当于:
def compress(data, selectors):
# compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F
return (d for d, s in zip(data, selectors) if s)
如:
import itertools
compress = itertools.compress([*'abc'], [0,1,0])
[*compress]
# ['b']
第二个参数,如同一个蒙板,将想要的数据筛选出来,这在数据科学中非常有用。
import itertools
data = 'ABCDEF'
selectors = [1, 0, 1, 0, 1, 0]
result = itertools.compress(data, selectors)
print(list(result))
# 输出:
# ['A', 'C', 'E']
import itertools
data = [10, 20, 30, 40, 50]
selectors = [True, False, True, False, True]
result = itertools.compress(data, selectors)
print(list(result))
# 输出:
# [10, 30, 50]
import itertools
data = ['apple', 'banana', 'cherry', 'date']
selectors = (x > 5 for x in [6, 2, 7, 3])
result = itertools.compress(data, selectors)
print(list(result))
# 输出:
# ['apple', 'cherry']
更新时间:2024-07-03 22:38:50 标签:python 迭代 压缩