diff -r 8ebbab768e1b Doc/library/itertools.rst --- a/Doc/library/itertools.rst Tue Dec 25 18:49:24 2012 +0200 +++ b/Doc/library/itertools.rst Wed Dec 26 01:16:16 2012 +0400 @@ -650,6 +650,19 @@ "Return first n items of the iterable as a list" return list(islice(iterable, n)) + def drop(n, iterable): + "Return items of the iterable except first n as a list" + return list(islice(iterable, n, None)) + + def takelast(n, iterable): + "Return iterator to produce last n items from origin" + return iter(collections.deque(iterable, maxlen=n)) + + def droplast(n, iterable): + "Return iterator to produce items from origin except last n" + t1, t2 = tee(iterable) + return map(operator.itemgetter(0), zip(t1, islice(t2, n, None))) + def tabulate(function, start=0): "Return function(0), function(1), ..." return map(function, count(start)) @@ -730,6 +743,16 @@ t1, t2 = tee(iterable) return filterfalse(pred, t1), filter(pred, t2) + def splitat(t, iterable): + "Split iterable into two iterators after given number of iterations" + t1, t2 = tee(iterable) + return isice(t1, t), islice(t2, t, None) + + def splitby(pred, iterable): + "Split iterable into two iterators at first false predicate" + t1, t2 = tee(iterable) + return takewhile(pred, t1), dropwhile(pred, t2) + def powerset(iterable): "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" s = list(iterable)