Язык программирования Python.

Функции itertools.imap(), itertools.starmap() и itertools.ifilter().

Аналогами map() и filter() в модуле itertools являются imap() и ifilter(). Отличие imap() от map() в том, что вместо значения от преждевременно завершившихся итераторов объект None не подставляется. Пример:

For i in map(lambda x, y: (x,y), [1,2], [1,2,3]):

 print i,

(1, 1) (2, 2) (None, 3).

From itertools import imap.

For i in imap(lambda x, y: (x,y), [1,2], [1,2,3]):

 print i,

(1, 1) (2, 2).

Здесь следует заметить, что обычная функция map() нормально воспринимает итераторы в любом сочетании с итерабельными (поддающимися итерациям) объектами:

For i in map(lambda x, y: (x,y), iter([1,2]), [1,2,3]):

 print i,

(1, 1) (2, 2) (None, 3).

Функция itertools.starmap() подобна itertools.imap(), но имеет всего два аргумента. Второй аргумент — последовательность кортежей, каждый кортеж которой задает набор параметров для функции (первого аргумента):

>>> from itertools import starmap.

>>> for i in starmap(lambda x, y: str(x) + y, [(1,'a'), (2,'b')]):

...  print i,

...

1a 2b.

Функция ifilter() работает как filter(). Кроме того, в модуле itertools есть функция ifilterfalse(), которая как бы добавляет отрицание к значению функции:

For i in ifilterfalse(lambda x: x > 0, [1, -2, 3, -3]):

 print i,

-2 –3.