如果我有一個迭代it
並欲竭其我可以這樣寫:如何高效地使用oneliner中的迭代器?
for x in it:
pass
有一個內置或標準庫調用,讓我做在一個班輪?當然,我可以這樣做:
list(it)
它將從迭代器構建一個列表,然後丟棄它。但我認爲這是因爲列表建設步驟效率低下。當然我自己寫一個幫助函數來做空循環,但我很好奇是否還有別的東西丟失。
如果我有一個迭代it
並欲竭其我可以這樣寫:如何高效地使用oneliner中的迭代器?
for x in it:
pass
有一個內置或標準庫調用,讓我做在一個班輪?當然,我可以這樣做:
list(it)
它將從迭代器構建一個列表,然後丟棄它。但我認爲這是因爲列表建設步驟效率低下。當然我自己寫一個幫助函數來做空循環,但我很好奇是否還有別的東西丟失。
# feed the entire iterator into a zero-length deque
collections.deque(iterator, maxlen=0)
這裏還簡要解釋了這裏:http://code.activestate.com/lists/python-ideas/23364/ –
謝謝 - 我曾試圖谷歌和stackoverflow搜索,沒有找到解決辦法。現在應該更容易發現:)而'collections.exhaust_iterator''或'itertools.exhaust_iterator''會更好,更明顯。 – hpk42
你可以使用sum
:
sum(0 for _ in it)
或者類似地,使用reduce
:
reduce(lambda x, y: y, it)
我不知道你想要什麼,但確實'[沒有爲了它]這份工作(或者這樣一個變體)? – Mathias711
假設你沒有爲副作用做這些工作,那麼只需要拋棄迭代器就可以拋棄它,有什麼好處呢? – snakecharmerb
純粹出於好奇 - 爲什麼? – nigel222