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

如何用无循环自定义函数按条件将numpy数组数值转为等级字符

问题

需要实现一个自定义函数,将数组中的数值按规则转换为字符串:

  • 大于70的值转为'P'
  • 小于70的值转为'F'

示例:

  • 输入[20,80,30,100] → 输出['F','P','F','P']
  • 输入[50,60,90,45] → 输出['F','F','P','F']

要求:用自定义函数实现,且不得使用for、if、while等显式循环或条件语句。

当前代码无法满足需求,执行后仅返回固定元组:

def grade(input_array):
    a = len(input_array)>70
    return 'P','F'
    
grade([50,85,60,100])

当前输出:

('P', 'F')
解决方案

可以利用map()函数结合布尔值的索引特性实现,无需显式循环或条件语句:

def grade(input_array):
    return list(map(lambda x: ['F', 'P'][x > 70], input_array))

# 测试验证
print(grade([20,80,30,100]))  # 输出: ['F', 'P', 'F', 'P']
print(grade([50,60,90,45]))   # 输出: ['F', 'F', 'P', 'F']
print(grade([50,85,60,100]))  # 输出: ['F', 'P', 'F', 'P']

实现说明

  1. map()函数会自动遍历输入数组的每个元素,避免手写for循环
  2. 布尔值在Python中可隐式转换为整数:x > 70返回True(对应整数1)或False(对应整数0)
  3. 通过列表索引['F', 'P'][x > 70]直接获取对应结果,替代if条件判断逻辑
  4. 用list()将map返回的迭代器转换为列表格式返回

内容的提问来源于stack exchange,提问作者Amelia Putri Damayanti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:45:03