[英]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.