Itertool funksjoner¶

følgende modul funksjoner alle konstruere og retur iterators. Noen providestreams av uendelig lengde, så de bør kun utføres av funksjoner orloops som avkorter stream.

itertools.accumulate(iterable)¶

Lag en iterator som returnerer akkumulerte summer, eller accumulatedresults av andre binære funksjoner (som er spesifisert via optionalfunc argumentet).,

Hvis func er levert, bør det være en functionof to argumenter. Elementer av input iterable kan være noen typethat kan bli akseptert som argumenter for å func. (For eksempel, withthe standard drift av tillegg, elementer kan være noen addabletype inkludert Decimal ellerFraction.)

Vanligvis, antall elementer utgang kamper innspill iterable.Imidlertid, hvis søkeordet første argumentet er gitt, theaccumulation fører av med den første verdien, slik at outputhas ett element enn det som input iterable.,

Omtrent tilsvarende:

Det finnes en rekke bruksområder for func-argumentet. Det kan være satt tilmin() for en kjører minimum, max() for en kjører maksimalt, elleroperator.mul() for en løpende produktet. Amortisering tabeller kan bebuilt ved å akkumulere interesse og bruk av betalinger. Første-orderrecurrence relationscan bli modellert ved å levere den første verdien i den iterable og bruke onlythe totalsummen i func-argumentet:

Se functools.reduce() for en lignende funksjon som returnerer bare thefinal akkumulert verdi.,

Ny i versjon 3.2.

Endret i versjon 3.3: Lagt til den valgfrie func-parameteren.

Endret i versjon 3.8: Lagt til den valgfrie første parameter.

itertools.chain(*iterables)¶

Lag en iterator som returnerer elementer fra den første iterable til det isexhausted, deretter fortsetter til neste iterable til alle iterables areexhausted. Brukes for behandling av sammenhengende sekvenser som en enkelt sekvens.,Omtrent tilsvarende:

– >

def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element

classmethodchain.from_iterable(iterable)¶

Alternativ konstruktør for chain(). Blir lenket innganger fra asingle iterable argument som er evaluert dovent. Omtrent tilsvarende:

– >

def from_iterable(iterables): # chain.from_iterable() --> A B C D E F for it in iterables: for element in it: yield element

itertools.combinations(iterable, r)¶

Gå r lengde undersekvenser av elementer fra input iterable.,

kombinasjonen tupler slippes ut i lexicographic bestilling i henhold til bestilling av input iterable. Så, hvis input iterable er sortert,kombinasjonen tupler vil bli produsert i sortert rekkefølge.

– Elementer blir behandlet som unike basert på deres posisjon, ikke på theirvalue. Så hvis input elements er unike, vil det ikke være repeatvalues i hver kombinasjon.,

Omtrent tilsvarende:

koden combinations() kan også være uttrykt som en subsequenceof permutations() etter filtrering oppføringer der elementene er notin sortert rekkefølge (i henhold til deres posisjon i input basseng):

antallet elementer som returneres, er en n! / r! / (n-r)! ved 0 <= r <= neller null når r > n.,

itertools.combinations_with_replacement(iterable, r)¶

Gå r lengde undersekvenser av elementer fra input iterableallowing enkelte elementer som gjentas mer enn én gang.

kombinasjonen tupler slippes ut i lexicographic bestilling i henhold til bestilling av input iterable. Så, hvis input iterable er sortert,kombinasjonen tupler vil bli produsert i sortert rekkefølge.

– Elementer blir behandlet som unike basert på deres posisjon, ikke på theirvalue. Så hvis input elements er unike, de er generert combinationswill også være unike.,

Omtrent tilsvarende:

koden combinations_with_replacement() kan også være uttrykt asa subsequence av product() etter filtrering oppføringer der elementsare ikke i sortert rekkefølge (i henhold til deres posisjon i input basseng):

antallet elementer som returneres, er en (n+r-1)! / r! / (n-1)! ved n > 0.

Nytt i versjon 3.1.,

itertools.compress(data, velgere)¶

Lag en iterator som filtrerer elementer fra data returnere bare de thathave en tilsvarende elementet i velgere som vurderer å True.Slutter enten når data eller velgere iterables har blitt oppbrukt.Omtrent tilsvarende:

– >

def compress(data, selectors): # compress('ABCDEF', ) --> A C E F return (d for d, s in zip(data, selectors) if s)

Nytt i versjon 3.1.

itertools.count(start=0, trinn=1)¶

Lag en iterator som returnerer jevnt fordelt verdier som starter med nummer start., Oftenused som et argument for å map() for å generere etterfølgende data poeng.Også, brukt med zip() for å legge rekkefølge tall. Omtrent tilsvarende:

– >

def count(start=0, step=1): # count(10) --> 10 11 12 13 14 ... # count(2.5, 0.5) -> 2.5 3.0 3.5 ... n = start while True: yield n n += step

Når du regner med flyttall, bedre nøyaktigheten kan noen ganger beachieved ved å erstatte multiplicative kode eksempel: (start + step * ifor i in count()).

Endret i versjon 3.1: Lagt til trinn argument og tillot ikke-heltall argumenter.,

itertools.cycle(iterable)¶

Lag en iterator tilbake elementer fra iterable og lagre en kopi av hver.Når iterable er oppbrukt, returnere elementer fra den lagrede kopier. Repeatsindefinitely. Omtrent tilsvarende:

Merk, dette medlem av toolkit kan kreve betydelige aux-lagring(avhengig av lengden på iterable).,

itertools.dropwhile(predikat, iterable)¶

Lag en iterator som faller elementer fra iterable så lenge predicateis true; etterpå, returnerer hvert element. Merk, det iterator ikke produceany utgang til predikatet første blir falskt, så det kan ha en lengthystart-up tid. Omtrent tilsvarende:

itertools.filterfalse(predikat, iterable)¶

Lag en iterator som filtrerer elementer fra iterable returnere bare de forwhich predikatet er False., Hvis predikat er None, returnere itemsthat er falske. Omtrent tilsvarende:

itertools.groupby(iterable, key=Ingen)¶

Lag en iterator som returnerer påfølgende taster og grupper fra iterable.Nøkkelen er en funksjon computing er en viktig verdi for hvert element. Hvis notspecified eller er None, tast standard til en identitet funksjon og returnsthe element uendret. Generelt er iterable må allerede være sortert onthe samme tast funksjon.,

bruk av groupby() er lik uniq filteret i Unix. Itgenerates en pause eller ny gruppe hver gang verdien av de viktigste funksjonen endringer(det er derfor det er vanligvis nødvendig å ha sortert data ved hjelp av den samme keyfunction). At atferden avviker fra SQL GRUPPE som aggregater commonelements uavhengig av deres inngang for.

Den returnerte gruppen er i seg selv en iterator som deler den underliggende iterablewith groupby()., Fordi kilden er delt, når groupby()objektet er avansert, den forrige gruppen er ikke lenger synlig. Så, hvis det datais nødvendig senere, det skal bli lagret som en liste:

groupby() er omtrent tilsvarende:

itertools.islice(iterable, stopp)¶itertools.islice(iterable, start, stopp)

Lag en iterator som returnerer valgte elementer fra iterable. Hvis start isnon-null, så elementer fra iterable er hoppet over før start er nådd.,Etterpå elementer returneres fortløpende med mindre trinn er satt høyere thanone som resulterer i at elementer som er hoppet over. Hvis stopp er None, deretter iterationcontinues til iterator er oppbrukt, hvis i det hele tatt; ellers, det stopper ved thespecified posisjon. I motsetning til vanlige kutting, islice() ikke supportnegative verdier for start, stopp, eller trinn. Kan brukes for å trekke ut relatedfields fra data der hvor den interne strukturen har blitt jevnet (for eksempel, amulti-linje rapporten kan gi et navn-feltet på hver tredje linje)., Omtrent tilsvarende:

Hvis start er None, deretter utgaven starter på null. Hvis trinn er None,deretter trinn standard til en.

itertools.permutations(iterable, r=Ingen)¶

Gå påfølgende r lengde permutasjoner av elementene i iterable.

Dersom h ikke er angitt eller er None, trykk deretter r-standard til lengthof den iterable og alle mulige full-lengde permutationsare generert.

Det permutasjon tupler slippes ut i lexicographic bestilling i henhold til bestilling av input iterable., Så, hvis input iterable er sortert,kombinasjonen tupler vil bli produsert i sortert rekkefølge.

– Elementer blir behandlet som unike basert på deres posisjon, ikke på theirvalue. Så hvis input elements er unike, vil det ikke være repeatvalues i hver permutasjon.,

Omtrent tilsvarende:

koden permutations() kan også være uttrykt som en subsequence avproduct(), filtrert for å utelukke oppføringer med gjentatte elementer (thosefrom samme posisjon i input basseng):

antallet elementer som returneres, er en n! / (n-r)! ved 0 <= r <= neller null når r > n.

itertools.product(*iterables, gjenta=1)¶

Kartesiske produktet av innspill iterables.,

Den nestede løkker syklus som en kilometerteller med lengst element advancingon hver iterasjon. Dette mønsteret skaper en lexicographic bestilling slik at ifthe inngang er iterables er sortert, produkt-tupler slippes ut i sortedorder.

for Å beregne produktet av en iterable med seg selv, angi antall ofrepetitions med den valgfrie gjenta søkeordet argument. For eksempel,product(A, repeat=4) betyr det samme som product(A, A, A, A).,

Denne funksjonen er omtrent tilsvarende til følgende kode, bortsett fra at theactual gjennomføringen ikke bygge opp mellomliggende resultatene i minnet:

Før product() går det helt forbruker-inngang iterables,holde bassenger av verdier i minnet for å generere produkter. Følgelig,det er bare nyttig med avgrensede innganger.

itertools.repeat(objekt)¶

Lag en iterator som returnerer objekt over og over igjen. Går indefinitelyunless ganger argumentet er angitt., Brukt som argument for å map() forinvariant parametre til de kalte funksjonen. Brukes også med zip() tocreate en invariant del av en tuple spille inn.

Omtrent tilsvarende:

En felles bruk for gjentakelse er til å levere en strøm av konstante verdier for å mapor zip:

– >

>>> list(map(pow, range(10), repeat(2)))

itertools.starmap(funksjon, iterable)¶

Lag en iterator som regner ut av funksjon ved hjelp av argumenter hentet suge iterable., Som brukes i stedet for map() når argumentet parametere er alreadygrouped i tupler fra en enkelt iterable (data har blitt «pre-pakkede»). Thedifference mellom map() og starmap() paralleller den distinctionbetween function(a,b) og function(*c). Omtrent tilsvarende:

– >

def starmap(function, iterable): # starmap(pow, ) --> 32 9 1000 for args in iterable: yield function(*args)

itertools.takewhile(predikat, iterable)¶

Lag en iterator som returnerer elementer fra iterable så lenge thepredicate er sant., Omtrent tilsvarende:

– >

def takewhile(predicate, iterable): # takewhile(lambda x: x<5, ) --> 1 4 for x in iterable: if predicate(x): yield x else: break

itertools.tee(iterable, n=2)¶

gå Tilbake n uavhengige iterators fra en enkelt iterable.

følgende Python-kode bidrar til å forklare hva tee gjør (selv om den actualimplementation er mer komplekse, og bruker bare en enkelt underlyingFIFO kø).

Omtrent tilsvarende:

en Gang tee() har laget en split, den opprinnelige iterable bør ikke beused noe annet sted; ellers iterable kunne få avansert withoutthe tee objekter blir informert.,

tee iterators er ikke threadsafe. En RuntimeError kan beraised når du bruker samtidig iterators tilbake ved samme tee()samtale, selv om den opprinnelige iterable er threadsafe.

Dette itertool kan kreve betydelige aux-lagring (avhengig howmuch midlertidige data trenger å bli lagret). Generelt, hvis en iterator usesmost eller alle data før en annen iterator starter, det er raskere å brukelist() i stedet for tee().,

itertools.zip_longest(*iterables, fillvalue=Ingen)¶

Lag en iterator som samler elementer fra hver av iterables. Hvis theiterables er av ujevn lengde, mangler verdier er fylt med fillvalue.Iterasjon fortsetter til den lengste iterable er oppbrukt. Omtrent tilsvarende:

Hvis en av iterables er potensielt uendelig, deretter zip_longest()funksjon skal være pakket med noe som begrenser antall samtaler(for eksempel islice() eller takewhile())., Hvis ikke angitt,fillvalue standard None.