msw*_*msw 5 python coding-style
我有一个循环,想要执行到耗尽或直到达到一些用户指定的限制.我有一个看起来不好的结构,但我似乎找不到更优雅的表达方式; 有吗?
def ello_bruce(limit=None):
for i in xrange(10**5):
if predicate(i):
if not limit is None:
limit -= 1
if limit <= 0:
break
def predicate(i):
# lengthy computation
return True
Run Code Online (Sandbox Code Playgroud)
神圣的筑巢!一定有更好的方法.出于工作示例的目的,xrange使用我通常具有有限但未知长度的迭代器(并且谓词有时返回False).
bca*_*cat 11
也许这样的事情会好一点:
from itertools import ifilter, islice
def ello_bruce(limit=None):
for i in islice(ifilter(predicate, xrange(10**5)), limit):
# do whatever you want with i here
Run Code Online (Sandbox Code Playgroud)