Python:我可以使用lambda参数n重复lambda操作(n+;n)n次吗?
我试图编写一个Python函数,它接受一个参数n,并在没有pow、*或**的情况下对其进行平方运算。我现阶段:Python:我可以使用lambda参数n重复lambda操作(n+;n)n次吗?,python,lambda,Python,Lambda,我试图编写一个Python函数,它接受一个参数n,并在没有pow、*或**的情况下对其进行平方运算。我现阶段: square = lambda n: n+n 我可以用大约10个字符重复n+n次吗? 平方=λn:和([n]*n) 编辑:(不使用*或**) 平方=λn:n+和(范围(2,n+n,2)) 您可以尝试以下方法: sqr = lambda n : sum(n for i in range(n)) 输出 >>> sqr(9) 81 >>> sqr(
square = lambda n: n+n
我可以用大约10个字符重复n+n次吗?
平方=λn:和([n]*n)
编辑:(不使用*或**)
平方=λn:n+和(范围(2,n+n,2))
您可以尝试以下方法:
sqr = lambda n : sum(n for i in range(n))
输出
>>> sqr(9)
81
>>> sqr(12)
144
可以对lambda使用递归:
x = lambda y, c:y+y + x(y, c+1) if c< 10 else 0
print(x(10, 0))
可以使用递归、条件表达式和默认参数执行此操作:
square = lambda n, i=0: n + square(n, i + 1) if n > i else 0
square(10) # 100
我想这可能只适用于正数。。。但可以使其与带有一些明智绝对值的负数一起工作:
square = lambda n, i=0: abs(n) + square(n, i + 1) if abs(n) > i else 0
正如@mgilson所说,您可以通过递归和lambdas来实现:
square = lambda n, m=0: 0 if n==m else n+square(n,m+1)
重要的是在每个步骤中都带上结果
lambda x:sum(x代表范围(x))
?很好,非常感谢。我不得不用I作为计数器,而不是xᴏʟᴅsᴘᴇᴇᴅ 如果您将x
重新用作循环变量,这将不起作用。@khelwood是的,我的错。我匆忙地写了它。它实际上应该是lambda x:sum(x表示范围(x))
,或n
或两者中的任何一个。使用int.\uu pow\uuuu4,2
,而不是nopow
)顺便说一句,我不确定任意的高尔夫限制通常会出现在Sob的主题中,但它有OP不想要的*
。我已经阅读了COLDSPEED的评论,并立即想出了Ashish后来建议的相同解决方案。谢谢你们两位。最后一个建议确实没有用处,也不能解决问题。不幸的是,我还不能投赞成票或反对票。哦,我的错,这个怎么样:square=lambda n:n+sum(范围(2,n+n,2))
谢谢大家。Lambda对我来说更有意义。在你发布解决方案后,我就投票支持了你的解决方案。这是不同的,也是错误的。是的,循环变量必须不同,但原理相同。没有注意到你已经发表了评论,正在为答案准备一些输出。是的,因为你提到了正确的答案(在我之前),这不是问题。
square = lambda n, m=0: 0 if n==m else n+square(n,m+1)