我從某處找到了這個簡單的代碼片段,但我不明白這個 sum() 語法是如何作業的。
total = sum(1 for _ in [1,2,3,4,5])
print(total) # 5
for _ in [1,2,3,4,5] 只不過是回圈五次。
所以代碼片段回圈了五次,每個回圈加 1,所以我猜變成了 5。
我不確定 while 回圈 5 次之后for _ in [1,2,3,4,5]發生了什么,然后使用 1?
根據 sum(iterable, start) 的語法,第一個引數應該是可迭代的,但 1 是 int。這是如何根據 sum 語法作業的。這段代碼如何在內部作業?我糊涂了。
uj5u.com熱心網友回復:
1 for _ in [1,2,3,4,5] 是一個迭代器,類似于
def my_gen():
for _ in range(5):
yield 1
這將回傳1五次。所以這條線可以寫成
sum((1,1,1,1,1))
uj5u.com熱心網友回復:
如果你分解它是否有幫助:
(1 for _ in [1,2,3])
甚至
[1 for _ in [1,2,3]]
用作計數串列的元素。因此,將運算式 ( [1,1,1])的結果提供給可迭代物件sum()就是提供了預期的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383909.html
