我有一個發電機,並希望找出它產生的第一個值比X大什麼方法做到這一點如下,但它似乎相當冗長(它讀起來像重複自己)。優雅的方式來計算第一個發電機的結果比X大
def long_winded(gen,X)
n = next(gen)
while n < X: n=next(gen)
return n
我想寫什麼更多的東西簡單:
short_broken(gen,X):
while next(gen)<X: pass
return next(gen) # returns the SECOND value larger than X, as gen is called again
short_broken2(gen,X):
while n = next(gen)<X: pass # Not python syntax!
return n
是否有返回相同的結果pythonically,簡潔的方式?
這是優雅的,但一個壞主意,如果你將會有發電機,你必須檢查一千多個元素(或者比你設定的最大遞歸限制更多)。 – Wilduck
啊哈!這是遞歸的明顯候選者。 :)但不幸@維爾德克的觀點是一個很好的觀點。 –
@ Wilduck的觀點絕對是一個很好的觀點 - 爲什麼我以「我不一定主張這種方法更好」作爲我的評論的前言?......這是一種弱言 - 「我懷疑我會用這在我的代碼「。 – mgilson