lst = map(lambda x: math.sin(x*.4), range(30)) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

lst = map(lambda x: math.sin(x*.4), range(30))

Поиск

1 -2 3 -3

 

Таким образом,takewhile() дает значения,пока условие истинно,а остальные значения даже не берет из итератора(именно не берет,а не высасывает все до конца!).И,наоборот,dropwhile() ничего не выдает,пока выполняется условие,зато потом выдает все без остатка.

 

Функция itertools.izip()

 

Функция izip() аналогична встроенной zip(),но не тратит много памяти на построение списка кортежей,так как итератор выдает их строго по требованию.

 

Функция itertools.groupby()

 

Эта функция дебютировала вPython 2.4.Функция принимает два аргумента:итератор(обязательный) и необязательный аргумент - функцию, дающую значение ключа: groupby(iterable[, func]).Результатом является итератор,который возвращает двухэлементный кортеж:ключ и итератор по идущим подряд элементам с этим ключом.Если второй аргумент опущен,элемент итератора сам является ключом.В следующем примере группируются идущие подряд положительные и отрицательные элементы:

 

import itertools, math

 

lst = map(lambda x: math.sin(x*.4), range(30))

for k, i in itertools.groupby(lst, lambda x: x > 0): print k, list(i)

 

Функция itertools.tee()

 

Эта функция тоже появилась вPython 2.4.Она позволяет клонировать итераторы.Первый аргумент-итератор,подлежащий клонированию.Второй(N) --количество необходимых

 

копий.Функция возвращает кортеж из N итераторов.По умолчанию N=2.Функция имеет смысл,только если итераторы задействованы более или менее параллельно.В противном случае выгоднее превратить исходный итератор в список.

 

Собственный итератор

 

Для полноты описания здесь представлен пример итератора,определенного пользователем.Если пример не очень понятен,можно вернуться к нему после изучения объектно-ориентированного программирования:

 

class Fibonacci:

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 53; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.037 с.)