You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用函数从列表筛选正偶数?代码报错求助

问题分析与修复方案

错误原因拆解

  • 函数被当作列表访问:result1是定义的函数,直接用result1[:7]会触发报错,函数不能通过下标访问,必须调用函数result1()才行。
  • 函数名拼写错误:定义的判断偶数的函数是ePar,但调用时写成了eEven,会触发未定义错误。
  • filterList参数传递错误:filterList需要的是「一个判断函数」和「待筛选的列表numbers」,但你传了两个判断函数,逻辑完全不符合要求。
  • 切片方向错误:要取最后7个元素应该用[-7:],[:7]是取前7个,和需求相反。
  • 变量名不一致:报错信息里出现resultado1,但代码里定义的是result1,必须保持变量名统一。

修正后的代码

def filterList(p, xs):
    return [x for x in xs if p(x)]

def ePar(num):
    return num % 2 == 0
    
def ePositive(num):
    return num > 0

# 组合两个判断条件,筛选正偶数
def get_positive_evens(numbers):
    return filterList(lambda x: ePar(x) and ePositive(x), numbers)

# 假设numbers是给定的整数列表,这里示例一个测试列表
numbers = [1, -2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20]
result1 = get_positive_evens(numbers)

# 取最后7个正偶数
print(result1[-7:])

简化写法(可选)

如果不想定义多个函数,直接用列表推导式实现会更简洁:

numbers = [1, -2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 20]
result1 = [x for x in numbers if x > 0 and x % 2 == 0]
print(result1[-7:])

内容的提问来源于stack exchange,提问作者larry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:26:05