我有一个发电机,并希望找出它产生的第一个值比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