如何用Python 3.x的Lambda函数在map中过滤负数并计算正数平方
解决方法:过滤负数并计算正数平方(基于map与Lambda)
规范实现(结合filter与map)
虽然题目要求使用map(),但更合理的做法是先通过filter()筛选出正数,再用map()计算平方,逻辑清晰且效率更高:
array = [1, -2, 3, -4, 5] a = list(map(lambda x: x ** 2, filter(lambda x: x > 0, array))) # 结果:[1, 9, 25]
严格符合题目要求(仅用map的Lambda)
如果必须仅通过a = map(----, array)的形式实现,横线处的Lambda需要包含条件判断:对正数返回平方,负数返回占位值(如None),后续再过滤掉占位值即可得到目标结果:
array = [1, -2, 3, -4, 5] # 横线处填入的Lambda函数 a = list(map(lambda x: x ** 2 if x > 0 else None, array)) # 过滤掉None,得到最终结果 a = [num for num in a if num is not None] # 结果:[1, 9, 25]
补充说明
map()本身仅负责对数组中每个元素执行转换操作,无法直接排除元素,因此第二种方式需要额外步骤处理占位值。实际开发中优先推荐第一种方式,它更符合函数式编程的拆分思想,避免对负数做无效计算。
内容的提问来源于stack exchange,提问作者Muhammad Ashir Ali
相关产品推荐
相关产品推荐

