python使用隱式迴圈快速求和的實現示例

2022-10-04 13:39:25 字數 1749 閱讀 1155

如何快速的求出1到x的和呢?**如下:

nb(注意): # 後面的部分表示輸出結果。

class debug:

def calculatesum(self, size):

return sum(range(size))

if __name__ == "__main__":

main = debug()

result = main.calculatesu程式設計客棧m(101)

print(result) # 5050

這裡我們想要求出1-100的和,因為range(101)最後的值是100,所以range()的引數應該取101而不是100,1到100的和我們早已耳熟能詳,答案是5050。可以看到我i們使用sum()和range()函式的組合就求出了1-100的和,這裡其實是運用了for的隱式迴圈.。嚴格地說此段**實際上計算的是0-100的和,但是因為0並不影響最終求和的結果,故這裡可以等同為1-100的和。上述**和下面的**等效。**如下:

class debug:

def calculatesum(self, size):

_sum = 0

for i in range(size):

_sum += i

return _sum

if __name__ == "__main__":

main = debug()

result = main.calculatesum(101)

print(result) # 5050

我們知道,range(101)的結果為range(0, 101),想要獲取它的展開形式我們需要用list進行轉換並檢視,因此當我們使用sum()函式對其進行求和運算的時候,事實上是遍歷了它中間的每乙個元素,也就是使用了隱式迴圈。

print(range(101)) # range(0, 101)

print(list程式設計客棧(range(101)))

"""result :

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19rasobjp, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

"""那麼進一步我們可不可能將快速求和進行推廣呢?是可以的,我們可以用此種方法計算出任意的等差數列的和。**如下:

class debug:

def calculatesum(self, start, end, gap):

return sum(range(start, end, gap))

if __name__ == "__main__":

main = debug()

result = main.calculatesum(0, 101, 2)

print(result) # 2550

這裡我們計算了0-100中差值為2的等差數列的和。

python 中使用隱式迴圈快速求和

如何快速的求出1到x的和呢?如下 nb 注意 後面的部分表示輸出結果。class debug def calculatesum self,size return sum range size if name main main debug result main.calculatesum 101 p...

隱式轉換中隱式引數與隱式函式的使用

隱式引數的使用 要定義多個隱式引數時,需要使用柯里化函式。隱式轉換作用就是 當呼叫方法時,不必手動傳入方法中的隱式引數,scala會自動在作用域範圍內尋找隱式值自動傳入。1 同型別的引數的隱式值只能在作用域內出現一次,同乙個作用域內不能定義多個型別一樣的隱式值。2 implicit 關鍵字必須放在隱...

python的隱式繼承

usr bin env python coding utf 8 class modle name dnn def init self,name self.name name def print name self print self.name classmethod 類方法不管後面被繼承了多少次,...