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