これを行うには、よりPythonicな方法、または少なくとも短くて簡単な方法があります:
i = 1
while True:
res = lookup(i) # returns a value or None
if res is None:
break
else:
i += 1
yield res
これを行うには、よりPythonicな方法、または少なくとも短くて簡単な方法があります:
i = 1
while True:
res = lookup(i) # returns a value or None
if res is None:
break
else:
i += 1
yield res
あなたは利用することができますitertools
:
from itertools import takewhile, count
# ...
def myfunc():
return takewhile(lambda x: x is not None, (lookup(i) for i in count(1)))
takewhile
何らかの理由で気に入らない場合:
for i in count(1):
res = lookup(i)
if res is None: break
yield res
itertools.count
無期限にカウントアップできます:
for i in itertools.count(1):
res = lookup(i)
if res is None: break
yield res
入らずにitertools
…
i = 1
res = lookup(i)
while res is not None:
i += 1
yield res
res = lookup(i)