使用map、lambda、filter获取多维列表中正整数的平方值
问题分析
你当前的代码只完成了「筛选正整数」的逻辑,缺少对筛选后的正整数做平方计算的步骤,整体思路方向没有问题,只需要补充映射平方的逻辑即可。
解决代码
按照要求必须使用map+lambda的约束,修改后代码如下:
# using map( <lambda here>, input) is mandatory input = [[-1, 1, 2, -1, 3], [3, 4,-5]] # 先筛选正整数,再对筛选结果映射平方计算 a = map(lambda x: list(map(lambda y: y ** 2, filter(lambda y: y > 0, x))), input) print(list(a))
提示:不建议使用
input作为自定义变量名,input是Python内置的标准输入函数,覆盖定义可能会导致后续调用内置功能时报错。
逻辑说明
- 外层
map遍历原多维列表的每一个子列表,保留原有列表嵌套结构 - 先通过
filter(lambda y: y > 0, x)筛选出当前子列表中的所有正整数 - 再通过内层
map(lambda y: y ** 2, ...)对筛选出的每个正整数做平方计算 - 最后通过
list()将map对象转为列表,和原有结构保持一致
运行后输出结果和你期望的完全一致:
[[1, 4, 9], [9, 16]]
内容的提问来源于stack exchange,提问作者CaptainK
相关产品推荐
相关产品推荐

