问题描述
所以我知道这项工作:
fac = lambda x: [element for element in x]
这也可行:
fac = lambda x: x*fac(x-1) if x!=0 else 1
但是为什么不起作用:
fac = lambda *x : [ n * fac(n-1) if n!=0 else 1 for n in x]
解决方法
如果输入为
n * fac(n-1)
, 3
将创建以下列表:-
[[[[1],[1]],[[1],[1]]]]
您需要从列表中获取第一个元素,然后将其乘以n
:-
fac = lambda *x : [ n * fac(n-1)[0] if n!=0 else 1 for n in x]
print(fac(3))
输出-
[6]