python 用户定义的函数需要帮助来修复错误
python user-defined function need help to fix error
我想写一个 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'
我该如何解决这个问题?
例如:
a = [[-0.17985, 0.178971],[-0.15312,0.226988]]
b = f(a)
预期输出
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]
我想写一个 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'
我该如何解决这个问题?
例如:
a = [[-0.17985, 0.178971],[-0.15312,0.226988]]
b = f(a)
预期输出
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]