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

给定此数组:

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函数来回答这个问题.

我try 使用嵌套循环和lambda的条件,但这非常令人困惑.你知道怎么解决这个问题吗?任何帮助都将不胜感激.

推荐答案

当你need to use lambda岁时,你可以将你得到的转化为列表理解(最具pythonic的IMO):

[[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相关问答推荐

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

我们可以为Flask模型中的id字段主键设置默认uuid吗

pyscript中的压痕问题

运输问题分支定界法&

Pre—Commit MyPy无法禁用非错误消息

如何让这个星型模式在Python中只使用一个for循环?

在单个对象中解析多个Python数据帧

python panda ExcelWriter切换动态公式到数组公式

Python—转换日期:价目表到新行

Python—为什么我的代码返回一个TypeError

如何在Python 3.9.6和MacOS Sonoma 14.3.1下安装Pyregion

从嵌套极轴列的列表中删除元素

使用Python TCP套接字发送整数并使用C#接收—接收正确数据时出错

按条件添加小计列

当输入是字典时,`pandas. concat`如何工作?

Scipy差分进化:如何传递矩阵作为参数进行优化?

时长超过24小时如何从Excel导入时长数据

如何在表单中添加管理员风格的输入(PDF)

为什么fizzbuzz在两个数字的条件出现在一个数字的条件之后时不起作用?

在PySpark中,可以从数组中获取任意数量的元素吗?