簡體   English   中英

制作一個多次使用 function 的 for 循環

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM