Using Iter() With Sentinel To Replace While Loops
Oftentimes the case arises where one would need to loop indefinitely until a certain condition has been attained. For example, if I want keep collecting random integers until I fin
Solution 1:
If you want generic boolean conditions, then iter(object, sentinel)
is insufficiently expressive for your needs. itertools.takewhile()
, in contrast, seems to be more or less what you want: It takes an iterator, and cuts it off once a given predicate stops being true.
rlist = list(itertools.takewhile(lambda x: x >= 20, inputlist))
Incidentally, partial
is not very Pythonic, and neither is itertools
. GvR is on record as disliking higher-order functional-style programming (note the downgrading of reduce
from built-in to a module member in 3.0). Attributes like "elegant" and "readable" are in the eye of the beholder, but if you're looking for Pythonic in the purest sense, you want the while loop.
Post a Comment for "Using Iter() With Sentinel To Replace While Loops"