如何通过迭代判断嵌套列表子列表和是否在指定区间并返回结果
寻找元素和在指定范围内的子可迭代对象
需求说明
遍历嵌套的可迭代对象(如列表嵌套列表、元组等),检查每个子对象的元素和是否落在指定的上下边界之间:
- 找到第一个符合条件的子对象,直接返回它
- 若所有子对象都不符合,返回
False
示例
传入嵌套对象 [[1,2,3], [4,5,6], [7,8,9], [1000], (10000, 10001)],上下边界设为900和11000,返回结果是[1000]——因为它的元素和为1000,刚好处于区间内;而元组(10000, 10001)的和为20001,超出上限,其余子列表的和均低于900。
Python 实现代码
def find_matching_subiterable(nested_iterable, lower, upper): for item in nested_iterable: # 筛选出可迭代且非字符串的子对象(避免误处理字符串) if hasattr(item, '__iter__') and not isinstance(item, str): try: total = sum(item) if lower <= total <= upper: return item except TypeError: # 子对象包含不可求和元素时,直接跳过 continue return False
代码说明
- 遍历嵌套对象的每个元素,先判断是否为可迭代对象(排除字符串,因为我们要处理的是数值组成的子结构)
- 对每个符合要求的子对象计算元素和,判断是否在
[lower, upper]区间内,符合则立即返回 - 若子对象包含无法求和的类型(如非数值元素),直接跳过该子对象
- 遍历结束未找到符合条件的子对象,返回
False
测试示例
# 运行测试 result = find_matching_subiterable([[1,2,3], [4,5,6], [7,8,9], [1000], (10000, 10001)], 900, 11000) print(result) # 输出: [1000]
内容的提问来源于stack exchange,提问作者shuman
相关产品推荐
相关产品推荐

