如何对这段Python代码执行正确的布尔迭代测试,遍历列表返回布尔值
修复后的代码及解释
原代码存在语法和逻辑错误,以下是修正后的实现:
问题分析
- 函数参数
numbers未被使用,循环错误引用了未定义的y - 条件判断写法错误,正确逻辑应为
left < 当前元素 > right - 错误地将全局列表
x转为布尔值,应判断当前元素是否满足条件 - 语法错误:
else块的print缺少闭合括号
正确实现
方式1:逐个打印每个元素的布尔结果
x = [7,2,9,10,23,5] left = 3 right = 8 def solution(numbers, left, right): for num in numbers: # 检查当前元素是否满足 left < num > right result = left < num > right print(result) # 调用函数,传入目标列表 solution(x, left, right)
运行输出:
False False True True True False
方式2:返回布尔值列表(更贴合“返回布尔值”的需求)
x = [7,2,9,10,23,5] left = 3 right = 8 def solution(numbers, left, right): # 用列表推导式生成布尔结果列表 return [left < num > right for num in numbers] # 获取结果并打印 result_list = solution(x, left, right) print(result_list)
运行输出:
[False, False, True, True, True, False]
关键说明
left < num > right是Python链式比较语法,等价于left < num and num > right,写法更简洁- 列表推导式是Python中生成结果列表的高效方式,适合这种逐个元素判断的场景
- 函数通过参数接收列表,避免依赖全局变量,代码更健壮
内容的提问来源于stack exchange,提问作者bobbuilder59
相关产品推荐
相关产品推荐

