Сообщить об ошибке.

Функция starmap() модуля itertools в Python

Применить функцию для каждого кортежа из списка кортежей

Синтаксис:

import itertools

itertools.starmap(function, iterable)

Параметры:

Возвращаемое значение:

Описание:

Функция starmap() модуля itertools создает итератор, который вычисляет функцию function, используя аргументы, полученные из кортежей в итерируемой последовательности iterable.

Используется вместо map(), когда параметры функции уже сгруппированы в кортежи из одной итерации, т. е. данные были предварительно упакованы в кортежи.

Разница между функциями map() и itertools.starmap() заключается в способе передачи аргументов вызываемой функции function и аналогична разнице между function(a, b) и function(*c).

Функция itertools.starmap() примерно эквивалентна следующему коду:

def starmap(function, iterable):
    # starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000
    for args in iterable:
        yield function(*args)

Примеры использования:

from itertools import starmap

def composition(*x):
    # произведение
    for n, i in enumerate(x):
        if n==0:
            rez = i
        else:
            rez = rez * i
    return rez 

# произведение
>>> x = starmap(composition, [(2,5,3), (3,2,1), (10,10,3)])
>>> list(x)
# [30, 6, 300]

# квадраты
>>> x = starmap(pow, [(2,5), (3,2), (10,3)])
>>> list(x)
# [32, 9, 1000]

# max
>>> x = starmap(max, [(2,5,4), (3,2,1), (10,3,8)])
>>> list(x)
# [5, 3, 10]

# min
>>> x = starmap(min, [(2,5,9,3), (3,2,6,8), (1,0,10,3)])
>>> list(x)
# [2, 2, 3]