3

これを行うには、よりPythonicな方法、または少なくとも短くて簡単な方法があります:

i = 1
while True:
    res = lookup(i) # returns a value or None
    if res is None:
        break
    else:
        i += 1
        yield res
4

3 に答える 3

7

あなたは利用することができます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
于 2012-05-28T13:14:13.960 に答える
3

itertools.count無期限にカウントアップできます:

for i in itertools.count(1):
    res = lookup(i)
    if res is None: break
    yield res
于 2012-05-28T13:22:09.557 に答える
3

入らずにitertools

i = 1
res = lookup(i)
while res is not None:
    i += 1
    yield res
    res = lookup(i)
于 2012-05-28T13:16:23.743 に答える