[英]Making a for-loop that uses a function multiple times
我有一个 function mul(f,g)
谁能告诉我如何制作一个多次使用 mul(f,g) 的forloop?
例如f=(x+1)^3
变为mul(f,mul(f,f))
提前致谢!
作为 for 循环,@Julia 是正确的,如果方法正确,则将值存储在循环外部:
lst = [1, 2, 3]
product = lst[0]
for n in lst:
product = mult(n, product)
但是,我想指出其他一些替代方案,它们在更复杂的情况下可能很有用。 首先,有一个称为递归的概念,这在许多情况下很有帮助,您需要在同一数据结构上或内部多次调用相同的 function(在本例中为列表):
def pow(n, p):
"""Raise n to a power p"""
if p == 0:
return n
return n * pow(n, p)
lst = [1, 2, 3]
您还可以使用functools
中的 function 将列表reduce
为单个值:
import functools
lst = [1, 2, 3]
product = functools.reduce(lambda n, m: n* m, lst)
有趣的练习。 由于 mul() function 一直在调用自己,根据定义,这就是递归。 然而,这不是递归通常的方式,基本情况决定了递归的深度。 这里,递归的深度由外部 for 循环确定。 这是一种方法:
def f(x):
return x + 1
def mul(f,g):
return(f ** g)
#To calculate (x + 1)^y where x=2 and y=3 , you write the following for loop:
x = 2
y = 3
for g in range(1, y+1):
g = mul(f(x),g)
print(g) #27
#To calculate (x + 1)^y where x=4 and y=2, you write the following for loop:
x = 4
y = 2
for g in range(1, y+1):
g = mul(f(x),g)
print(g) #25
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.