Python 在lambda语句中的for语句中使用if-else语句
所以我知道这项工作:Python 在lambda语句中的for语句中使用if-else语句,python,for-loop,if-statement,lambda,Python,For Loop,If Statement,Lambda,所以我知道这项工作: 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]], [[1], [1]]
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]], [[1], [1]]]]
您需要从列表中获取第一个元素,并将其与n
相乘:-
fac = lambda *x : [ n * fac(n-1)[0] if n!=0 else 1 for n in x]
print(fac(3))
输出-
[6]
当我单独运行最后一个示例时,没有无限循环。在上一个示例中,您如何调用
fac
?@mkrieger1 fac(1,2,3)给了我一个无限循环。但我不明白到底是什么原因goal@mkrieger1目标是计算一行中的阶乘