from typing import Iterable, TypeVar, Callable _IterType = TypeVar('_IterType') _IterTargetType = TypeVar('_IterTargetType') def iter_mapping(iter_: Iterable[_IterType], mapping: Callable[[_IterType], _IterTargetType]): """ Overview: Map a list of iterable elements to input iteration callable Arguments: - iter_(:obj:`_IterType list`): The list for iteration - mapping (:obj:`Callable [[_IterType], _IterTargetType]`): A callable that maps iterable elements function. Return: - (:obj:`iter_mapping object`): Iteration results Example: >>> iterable_list = [1, 2, 3, 4, 5] >>> _iter = iter_mapping(iterable_list, lambda x: x ** 2) >>> print(list(_iter)) [1, 4, 9, 16, 25] """ for item in iter_: yield mapping(item)