簡體   English   中英

sum函數如何在python中使用for循環

[英]How does sum function work in python with for loop

我在pyhton中使用sum函數,我很清楚它的一般結構總和(可迭代,開始) ,但我無法得到以下代碼背后的邏輯

test = sum(5 for i in range(5) )
print("output:  ", test) 

輸出:25

請任何人都能描述這里發生的事情,基本上這里5乘以5,每個樣本輸入都有相同的模式。

您的代碼是:

test = sum((5 for i in range(5)))

刪除額外的括號是語法糖:它對您的算法沒有影響。

(5 for i in range(5))組件是一個生成器表達式 ,在每次迭代時產生值5.您的生成器表達式總共有5次迭代,由range(5)定義。 因此,生成器表達式恰好產生5次5次。

sum ,正如文檔所指出的那樣,接受任何可迭代的 ,甚至是那些完全不在記憶中的迭代 生成器和擴展生成器表達式具有內存效率。 因此,你的邏輯將恰好相加5次5次,相當於25次。

在閉環中不使用變量時的約定是用下划線( _ )表示該變量,所以通常你會看到你的代碼寫成:

test = sum(5 for _ in range(5))

您可以向sum函數添加一個列表,這樣您就可以這樣做:

test = sum((1,23,5,6,100))
print("output:  ", test) 

你得到135

因此,使用“for循環”,您將獲得一個列表並將該列表放入sum函數,並獲得列表的總和。 真實的sum函數使用yield insight並使用每個值並總結它們。

基本上,它是對范圍(5)上的每個“i”重復求和5。 意思是,這段代碼相當於n * 5,n是范圍(n)的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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