Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:我可以使用lambda参数n重复lambda操作(n+;n)n次吗?_Python_Lambda - Fatal编程技术网

Python:我可以使用lambda参数n重复lambda操作(n+;n)n次吗?

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(

我试图编写一个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(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
,而不是no
pow
)顺便说一句,我不确定任意的高尔夫限制通常会出现在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)