无需for循环根据True值起止区间生成布尔列表的方法(兼容pandas)
区间列表转布尔列表/布尔Series 一行实现
输入示例
x = [[1,4], [6,7], [9,9]] # 预期输出:[False, True, True, True, True, False, True, True, False, True]
普通Python列表场景
自动以区间的最大结束值作为结果列表的最大索引(适配0起始索引,结果长度为最大结束值+1),一行实现:
bool_list = [any(start <= idx <= end for start, end in x) for idx in range(max(end for _, end in x) + 1)]
如果需要自定义结果长度,直接替换range内的参数即可,比如生成索引0到11、长度为12的结果:
bool_list = [any(start <= idx <= end for start, end in x) for idx in range(12)]
Pandas Series场景
生成指定长度的布尔Series
import pandas as pd bool_series = pd.Series(range(max(end for _, end in x) + 1)).apply(lambda val: any(s <= val <= e for s, e in x))
对现有Series做区间匹配判断
假设已有待判断的Series为s,直接调用apply即可完成批量判断:
bool_series = s.apply(lambda val: any(s_range <= val <= e_range for s_range, e_range in x))
内容的提问来源于stack exchange,提问作者user3521099
相关产品推荐
相关产品推荐

