亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

小白,請教各位大佬!Python 生成器實現方式問題大佬們有什么好的建議?

小白,請教各位大佬!Python 生成器實現方式問題大佬們有什么好的建議?

白豬掌柜的 2019-07-27 00:28:31
defaccumulate(iterable,func=operator.add):'Returnrunningtotals'#accumulate([1,2,3,4,5])-->1361015#accumulate([1,2,3,4,5],operator.mul)-->12624120it=iter(iterable)try:total=next(it)exceptStopIteration:returnyieldtotalforelementinit:total=func(total,element)yieldtotal這是Python文檔關于itertools.accumulate函數的說明https://docs.python.org/zh-cn...在我的理解里(應該是錯誤的理解),total=next(it)總會取到第一個值,而永遠不會拋出異常,誰能告訴會拋出這個異常的實例呢?請問在什么情況下,調用這個函數會拋出StopIteration異常呢,傳入一個可迭代對象實參后,try:total=next(it),不是應該總是可以取到第一個元素嗎,為什么需要exceptStopIteration呢,在什么情況下才會拋出這個異常呢?感謝回答,我明白next取不到下一個元素的時候就拋出StopIteration,但是這段代碼運行后取一次next然后就會進入forelementinit:的這個循環中,并在這個循環結束時就結束這個函數.而不會再執行上面的next,那么怎么會拋出stopIteration呢?可以具個具體的實例嗎就是說next在這段代碼中是否只會執行一次呢,而執行一次的話,不是應該"總是"可以取到第一個元素而不會拋出異常嗎?
查看完整描述

2 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

當next取不到下一個元素的時候就會出現StopIteration,其實就是說StopIteration是作為一個列表遍歷的結尾標識存在的。
                            
查看完整回答
反對 回復 2019-07-27
  • 2 回答
  • 0 關注
  • 197 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號