diff --git a/itertools/itertools.py b/itertools/itertools.py index 6ac6f2bb..5c00952f 100644 --- a/itertools/itertools.py +++ b/itertools/itertools.py @@ -51,3 +51,7 @@ def islice(p, start, stop=(), step=1): def tee(iterable, n=2): return [iter(iterable)] * n + +def starmap(function, iterable): + for args in iterable: + yield function(*args) diff --git a/itertools/test_itertools.py b/itertools/test_itertools.py index 78142737..6a4ad1be 100644 --- a/itertools/test_itertools.py +++ b/itertools/test_itertools.py @@ -12,3 +12,5 @@ assert list(itertools.islice(g(), 5)) == [123, 123, 123, 123, 123] assert list(itertools.islice(itertools.cycle([1, 2, 3]), 10)) == [1, 2, 3, 1, 2, 3, 1, 2, 3, 1] assert list(itertools.islice(itertools.cycle(reversed([1, 2, 3])), 7)) == [3, 2, 1, 3, 2, 1, 3] + +assert list(itertools.starmap(lambda x, y: x * y, [[1, 2], [2, 3], [3, 4]])) == [2, 6, 12]