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

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

如果我在生成器中手動前瞻,使我的枚舉索引相對應?

如果我在生成器中手動前瞻,使我的枚舉索引相對應?

神不在的星期二 2021-03-18 14:11:04
>>> gen = iter(['a','b','c','d'])>>> for i, line in enumerate(gen):...     print str(i) + ', ' + line...     if (i == 1):...         print 'saw 1'...         print 'next: ' + gen.next()...0, a1, bsaw 1next: c2, d如您所見,我更愿意將3, d其理解為(如果愿意,我想保留一個不變式:因為還有其他原因enumerate?)是i對應于的索引line。在next()接管了轉儲。遺憾的是,此嘗試失敗,i因為設置為for循環認為應該是:>>> gen = iter(['a','b','c','d'])>>> for i, line in enumerate(gen):...     print str(i) + ', ' + line...     if (i == 1):...         print 'saw 1'...         print 'next: ' + gen.next()...         i = i + 1...0, a1, bsaw 1next: c2, d答案是什么?溝enumerate手動跟蹤索引?我希望有一些高級程序可以適應這種控制流程。我正在解析一個文件,偶爾需要讀取下一行的內容(如果存在)(因此調用next()生成器),但是因此我不得不處理循環控制流。因為我已經知道該怎么做,所以將不接受通過首先讀出并完全評估生成器來做到這一點的答案(但請隨時發布這樣的答案,我會投票贊成)。
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

您可以一直使用enumerate迭代器。


>>> gen = enumerate(['a','b','c','d'])

>>> for i, line in gen:

...     print str(i) + ', ' + line

...     if (i == 1):

...         print 'saw 1'

...         print 'next: ' + gen.next()[1]

...

0, a

1, b

saw 1

next: c

3, d

注意在打印時訪問元組第二個元素的索引next。您也可以放棄iter此方法的顯式調用。如果希望顯式調用iter以防enumerate更改行為,則應將其放在外面(因為要點是確保您正在處理迭代器):


>>> gen = iter(enumerate(['a','b','c','d']))


查看完整回答
反對 回復 2021-03-30
  • 2 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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