python - 带条件的嵌套循环中的 lambda

标签 python loops lambda nested logic

我在申请新工作的一次测试中遇到了这个问题。

给定这个数组:

arr = [[-1, 1, 2, -2, 6], [3, 4, -5]]

  1. 对于列表中的每个元素,如果发现负值,我们要排除它
  2. 对剩余值进行平方

我已经使用正常循环做出了答案

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/

相关文章:

java - Collectors-map-java8 内 lambda 中的类类型

Android-当我调用 onClick_Start 方法时,应用程序崩溃

loops - 在Vim中自动添加/生成内容

c# - 里面的lambda表达式?? (如果是快捷方式)运算符

Python RASA - 导入 "object() takes no parameters"时出现错误 "from rasa_core.agent import Agent"

python - 如何在python中集成维基数据查询

python - 在 Numpy 中高效构建稀疏邻接矩阵

python - 值错误: Unknown format code 'g' for object of type 'str'

C++: 程序 "Not Responding"执行时

c# - 重用包含相同属性但不同 lambda where 子句条件的方法