python用户定义函数需要帮助来修复错误

python用户定义函数需要帮助来修复错误,python,function,user-defined,Python,Function,User Defined,我想编写一个python函数,如下所示: import numpy as np a = [[-0.17985, 0.178971],[-0.15312,0.226988]] (lambda x: x if x > 0 else np.exp(x)-1)(a) 下面是python错误消息: TypeError Traceback (most recent call last) <ipython-input-8-78ce

我想编写一个python函数,如下所示:

import numpy as np
a = [[-0.17985, 0.178971],[-0.15312,0.226988]] 
(lambda x: x if x > 0 else np.exp(x)-1)(a)
下面是python错误消息:

TypeError                                 Traceback (most recent call last)
<ipython-input-8-78cecdd2fe9f> in <module>
----> 1 (lambda x: x if x > 0 else np.exp(x)-1)(a)

<ipython-input-8-78cecdd2fe9f> in <lambda>(x)
----> 1 (lambda x: x if x > 0 else np.exp(x)-1)(a)

TypeError: '>' not supported between instances of 'list' and 'int'
预期产量

b = [[-0.1646, 0.17897],[-0.14197, 0.22699]]

您有一个列表列表,因此需要进行额外的迭代:

import numpy as np

a = [[-0.17985, 0.178971],[-0.15312,0.226988]]

f = lambda x: x if x > 0 else np.exp(x)-1

res = []
for x in a:
    lst = []
    for y in x:
        lst.append(f(y))
    res.append(lst)

print(res)
# [[-0.16460448865975663, 0.17897099999999999], [-0.14197324757693675, 0.226988]]
由于最终结果是列表,因此使用列表理解可以更好地解决此问题:

[[x if x > 0 else np.exp(x)-1 for x in y] for y in a]
或使用定义的
lambda

[[f(x) for x in y] for y in a]

'list'和'int'的实例之间不支持'>'。没有人知道为什么要将该(假定为矩阵)列表与0进行比较。但这是引起错误的原因。谢谢你给我回复。如果元素x>0返回x,您能指导我如何编写python函数来执行元素操作吗;否则,取exp(x)-1
[[f(x) for x in y] for y in a]