如何实现如图所示的数组区间条件?
数组区间条件的实现方案
根据需求场景,下面给出几种常见的数组区间条件实现方式,涵盖筛选、验证、分组三类常用操作:
1. 筛选区间内的元素
从数组中挑出所有在[最小值, 最大值]范围内的元素。
Python 代码
def filter_in_range(arr, min_val, max_val): # 列表推导式直接筛选符合条件的元素 return [num for num in arr if min_val <= num <= max_val] # 实际测试 test_arr = [2, 7, 11, 15, 19, 23] filtered = filter_in_range(test_arr, 7, 19) print(filtered) # 输出: [7, 11, 15, 19]
JavaScript 代码
function filterInRange(arr, minVal, maxVal) { // 用数组的filter方法过滤元素 return arr.filter(num => num >= minVal && num <= maxVal); } // 实际测试 const testArr = [2, 7, 11, 15, 19, 23]; const filtered = filterInRange(testArr, 7, 19); console.log(filtered); // 输出: [7, 11, 15, 19]
2. 验证数组全量符合区间要求
检查数组里的每一个元素是否都落在指定区间内,返回布尔值。
Python 代码
def all_in_range(arr, min_val, max_val): # 用all函数遍历验证所有元素 return all(min_val <= num <= max_val for num in arr) # 实际测试 test_arr1 = [7, 11, 15] print(all_in_range(test_arr1, 7, 19)) # 输出: True test_arr2 = [7, 25, 15] print(all_in_range(test_arr2, 7, 19)) # 输出: False
JavaScript 代码
function allInRange(arr, minVal, maxVal) { // 用数组的every方法做全量验证 return arr.every(num => num >= minVal && num <= maxVal); } // 实际测试 const testArr1 = [7, 11, 15]; console.log(allInRange(testArr1, 7, 19)); // 输出: true const testArr2 = [7, 25, 15]; console.log(allInRange(testArr2, 7, 19)); // 输出: false
3. 按区间分组元素
把数组元素分配到预先定义好的多个区间组里,比如[0,5)、[5,10)这类区间。
Python 代码
def group_by_ranges(arr, range_defs): # 先初始化每个区间对应的空列表 groups = {desc: [] for desc in range_defs} for num in arr: for desc in range_defs: # 解析区间描述的最小值和最大值 min_val, max_val = map(int, desc.strip('[]()').split(',')) # 根据区间开闭调整判断逻辑,这里示例用左闭右开 if min_val <= num < max_val: groups[desc].append(num) break return groups # 实际测试 test_arr = [3, 6, 9, 12, 14] range_defs = ['[0,5)', '[5,10)', '[10,15)'] grouped = group_by_ranges(test_arr, range_defs) print(grouped) # 输出: {'[0,5)': [3], '[5,10)': [6,9], '[10,15)': [12,14]}
内容的提问来源于stack exchange,提问作者Hashir Hamza
相关产品推荐
相关产品推荐

