Мы поможем в написании ваших работ!
ЗНАЕТЕ ЛИ ВЫ?
|
Функции itertools.imap(), itertools.starmap() и itertools.ifilter()
Содержание книги
- наименьшее целое,большее или равное x
- Размешивает элементы изменчивой последовательности s на
- locale.setlocale(locale.LC_ALL, None)
- quot;""Модуль для вычисления простых чисел от 2 до N """
- gt;>> profile.run("Sieve.primes(100000)")
- file: test_Sieve.py import Sieve, sets import unittest
- Sieve - Модуль для вычисления простых чисел от 2 до N
- Взаимодействие с операционной системой
- chmod(path, mode) Устанавливает режим доступа к path в значение mode.Режим доступа
- использовать константы из модуля stat,например stat.ST_MTIME
- Модуль tempfile. Import tempfile. F = tempfile. Temporaryfile(). F. Write("0"*100) # записывается сто символов 0 F. Seek(0) # уст. Указатель на начало файла. Print len(f. Read()) # читается до конца файла и вычисляется длина. Обработка текстов.
- mydata = ("abc", 12, [1, 2, 3]) output_file = open("mydata.dat", "w") p = pickle.Pickler(output_file) p.dump(mydata)
- Эта категория модулей имеет применение только для конкретных операционных систем и семейств операционных систем.Довольно большое число модулей в стандартной поставке
- Поддержка Internet. Форматы данных
- Лекция#3:Элементы функционального
- Функциональная программа. Функция: определение и вызов
- Лучше всего рассмотреть синтаксис определения функции на нескольких примерах.После
- args - список аргументов в порядке их указания при вызове return max(args), min(args)
- def mylist(val, lst=[]): lst.append(val) return lst
- Функции как параметры и результат
- gt;>> print range(1, 10)
- Частный случай применения map()-использование None в качестве первого аргумента.В
- return reduce(lambda x, y: x + y, lst, start)
- Итераторы можно применять вместо последовательности в операторе for. Более того,внутренне оператор for запрашивает от последовательности ее итератор. Объект
- def forit(mystate=[]): if len(mystate) < 3: mystate.append(" ")
- Функции itertools.imap(), itertools.starmap() и itertools.ifilter()
- lst = map(lambda x: math.sin(x*.4), range(30))
- quot;""Итератор последовательности Фибоначчи до N"""
- for line in (l.replace("- ", " - ") for l in open("input.dat")): print line
- print subtract(3, 2) subtract_from_3 = curry(subtract, 3) print subtract_from_3(2)
- Все данные в нем представляются объектами.
- С точки зрения объектно-ориентированного подхода,объект-это нечто,обладающее
- Интерпретатор языкаPythonвсегда может сказать,к какому типу относится объект.Однако
- Пока что вpythonесть"классические"и"новые"классы. Первые классы определяются сами по себе,а вторые обязательно ведут свою родословную от класса object. Для целей
- from sets import Set as set # тип для множества
- def getx(self): return self.__x
- Этот метод вызывается при присваивании значения некоторому атрибуту.В отличие от __getattr__(),метод всегда вызывается,а
- print ad.a, ad.b, ad.c ad.d = 512
- print get_last([1, 2, 3]) print get_last("abcd")
- gt;>> class A(object): pass
- class ABC: a = ma b = mb c = mc
- В случае,когда надклассы имеют одинаковые методы,использование того или иного метода определяется порядком разрешения методов(method resolution order). Для
- quot;""Поместить элемент на стек"""
- def __init__(self, lst, n): self.n = n
- gt;>> s = MyClass() # создается экземпляр класса
- children = [cls.convert(child) for child in val] return cls(val.node, children)
- convert = classmethod(convert)
- def my_method(self): print "self:", self
- from Multimethod import Method, Generic, AmbiguousMethodError
- Должен возвращать кортеж из аргументов,который будет
if i > 100: break
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99 100 101
Функция itertools.cycle()
Можно бесконечно повторять и некоторую последовательность(или значения другого итератора)с помощью функции cycle():
tango = [1, 2, 3]
for i in itertools.cycle(tango): print i,
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2
3 1 2 3 1
2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 . . .
Функции 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
Функции itertools.takewhile() и itertools.dropwhile()
Некоторую новизну вносит другой вид фильтра:takewhile() и его"отрицательный"аналог dropwhile().Следующий пример поясняет их принцип действия:
for i in takewhile(lambda x: x > 0, [1, -2, 3, -3]): print i,
print
for i in dropwhile(lambda x: x > 0, [1, -2, 3, -3]): print i,
|