Page 55 - 6734
P. 55

itertools – функції для ефективних ітерацій
               Модуль  itertools  містить  функції,  які  створюють  ітератори  і
           призначені для ефективних ітерацій по даним [5, 19]. Для економії
           пам’яті ітератори застосовуються з оператором for, але в прикладі
           вони  передані  функції  list.  Це  зроблено  тільки  для  зменшення
           об’єму коду прикладу.
           from operator import add # бінарний оператор +
           from itertools import *
           print list(izip('ab', 'cd')) # зшиває перший з
           першим, другий з другим  і т.д.
           # count - послідовні значення, cycle - повторює
           послідовність нескінченно
           for n,i in izip(count(), cycle('abc')):
               if n>5: break
               print (n,i),
           print
           print list(chain('ab','cd')) # об'єднує в один
           print list(compress('abcd', [1,0,1,0])) # тільки ті
           елементи, яким відповідає 1
           print list(dropwhile(lambda x: x!='c', 'abcd')) #
           відкидати поки True
           print list(takewhile(lambda x: x!='c', 'abcd')) #
           приймати поки True
           print [(k,list(g)) for k, g in groupby('aaabbac')] #
           групує
           print list(ifilter(lambda x: x in 'bd', 'abcd')) #
           фільтрує
           print list(imap(add, (1,2,3), (4,5,6))) # add(1,4),
           add(2,5), ...
           #print list(imap(lambda x,y: x+y, (1,2,3), (4,5,6)))
           # або
           print list(starmap(add, [(1,2), (4,5)])) # add(1,2),
           add(4,5), ...
           print [list(i) for i in tee('abc',3)] # створює 3
                                          54
   50   51   52   53   54   55   56   57   58   59   60