如何统计列表中落在给定区间内的数字总个数
统计列表指定区间内数字数量的实现方案
原代码问题分析
你给出的代码存在核心逻辑错误:
count = 0初始化放在for循环内部,每遍历一个元素就会把计数重置为0,最终返回的只会是最后一个元素是否符合区间的结果(0或1),和预期的总计数完全不符- 现有判断逻辑是开区间
a < i < b,即不包含a和b两个端点,如果你的需求是包含端点的闭区间,需要修改判断条件
修正后代码
def between(lst, a, b): count = 0 for i in lst: if a < i < b: count += 1 return count
如果需要统计包含区间端点的闭区间范围,将判断条件修改为a <= i <= b即可。
如果需要更简洁的Python写法,可以直接用生成器表达式配合sum函数实现,逻辑等价:
def between(lst, a, b): return sum(1 for i in lst if a < i < b)
调用示例
比如统计列表[1,3,5,7,9]中大于2小于8的数字数量:
print(between([1,3,5,7,9], 2, 8)) # 输出结果为3,符合要求的数字是3、5、7
内容的提问来源于stack exchange,提问作者yagel
相关产品推荐
相关产品推荐

