Add a prepend() recipe to teach a chain() idiom (GH-6415)

This commit is contained in:
Raymond Hettinger 2018-04-08 08:44:20 -07:00 committed by GitHub
parent c87eb09d2e
commit 9265dd72e5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 0 deletions

View File

@ -688,6 +688,11 @@ which incur interpreter overhead.
"Return first n items of the iterable as a list" "Return first n items of the iterable as a list"
return list(islice(iterable, n)) return list(islice(iterable, n))
def prepend(value, iterator):
"Prepend a single value in front of an iterator"
# prepend(1, [2, 3, 4]) -> 1 2 3 4
return chain([value], iterator)
def tabulate(function, start=0): def tabulate(function, start=0):
"Return function(0), function(1), ..." "Return function(0), function(1), ..."
return map(function, count(start)) return map(function, count(start))

View File

@ -2198,6 +2198,11 @@ Samuele
... "Return first n items of the iterable as a list" ... "Return first n items of the iterable as a list"
... return list(islice(iterable, n)) ... return list(islice(iterable, n))
>>> def prepend(value, iterator):
... "Prepend a single value in front of an iterator"
... # prepend(1, [2, 3, 4]) -> 1 2 3 4
... return chain([value], iterator)
>>> def enumerate(iterable, start=0): >>> def enumerate(iterable, start=0):
... return zip(count(start), iterable) ... return zip(count(start), iterable)
@ -2350,6 +2355,9 @@ perform as purported.
>>> take(10, count()) >>> take(10, count())
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(prepend(1, [2, 3, 4]))
[1, 2, 3, 4]
>>> list(enumerate('abc')) >>> list(enumerate('abc'))
[(0, 'a'), (1, 'b'), (2, 'c')] [(0, 'a'), (1, 'b'), (2, 'c')]