Oktatás * Programozás 2 * Szkriptnyelvek * levelezősök Félévek Linkek * kalendárium |
Py /
20170516eitertools #1 Az itertools modul számos iterátort tartalmaz, amik a szekvenciák feldolgozását könnyítik meg. A modul függvényei olyan műveleteket tesznek lehetővé, amik ismerősek lehetnek a funkcionális programozási nyelvekből. Ezen iterátorok gyorsak és a memóriát is hatékonyan használják. Ha nagyméretű listákat építünk fel, hogy aztán bejárjuk őket, akkor lehet, hogy az iterools függvényeivel hatékonyabb kódot tudnánk írni. Egy modulból nem szép dolog mindent beimportálni, de most az egyszerűség kedvéért minden példa elejére képzeljük oda az alábbi sort: from itertools import * Végtelen iterátorok A count(start=0, step=1) def main(): for i in count(11): if i > 15: break # print(i) Indul a 11-es kezdőértékről (a lépésköz az alapértelmezett 1 lesz), majd generálja a rákövetkező egészeket: 12, 13, 14, … 11 12 13 14 15 Hasonló hatást érhetünk el az def main(): for i in islice(count(11), 5): print(i) A 11 12 13 14 15 cycle(iterable) def main(): cnt = 0 for c in cycle('ABCD'): cnt += 1 if cnt > 10: break # print(c, end=" ") A B C D A B C D A B A repeat(object[, times]) Ha a def main(): for c in repeat('X', 5): print(c, end=" ") X X X X X Gyakran a Néhány használati eset Kezdőérték konstansoknak RED, GREEN, BLUE = range(3) # RED is 0, GREEN is 1, BLUE is 2 De mi van, ha mondjuk az 5, 6, 7 értékeket akarjuk hozzájuk rendelni? RED, GREEN, BLUE = range(5, 5+3) # RED is 5, GREEN is 6, BLUE is 7 Viszont ez elég furán néz ki. Így talán szebb: RED, GREEN, BLUE = islice(count(5), 3) # RED is 5, GREEN is 6, BLUE is 7 Persze a triviális esetről se felejtkezzünk el: RED, GREEN, BLUE = (5, 6, 7) Linkek |
Blogjaim, hobbi projektjeim * The Ubuntu Incident [ edit ] |