我在申请新工作的一次测试中遇到了这个问题。
给定这个数组:
arr = [[-1, 1, 2, -2, 6], [3, 4, -5]]
- 对于列表中的每个元素,如果发现负值,我们要排除它
- 对剩余值进行平方
我已经使用正常循环做出了答案
for i in arr:
for j in range(len(i)):
if i[j]>0:
asd = i[j]**2
i[j] = asd
else:
i.remove(i[j])
print(arr)
结果应该是这样的:[[1, 4, 36], [9, 16]]
问题是,我必须使用lambda函数来传递问题。
我尝试使用带有 lambda 条件的嵌套循环,但它非常令人困惑。知道如何解决这个问题吗?任何帮助将不胜感激。
最佳答案
当你需要使用 lambda 时,你可以将你得到的内容转换为列表理解(IMO 中最 Pythonic 的方式):
[[x**2 for x in l if x>=0] for l in arr]
转换为功能变体:
list(map(lambda l: list(map(lambda x: x**2, filter(lambda x: x>=0, l))), arr))
更长、效率更低、更神秘,但你确实有很多 lambda ;)
输出:[[1, 4, 36], [9, 16]]
有关此主题的更多信息:list comprehension vs lambda+filter
关于python - 带条件的嵌套循环中的 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72921131/