Itertools is een van de handigste modules die Python biedt. De functies maken het een makkie om met lijsten en arrays te werken. Of je nu alle permutaties van de waarden in een array nodig hebt, of je wilt karakters uit een string groeperen, Itertools kan je helpen.
Het schrijven van de code voor dergelijke veelvoorkomende gevallen kan vervelend en foutgevoelig zijn. Daarom hebben ontwikkelaars bibliotheken gebouwd om dit allemaal voor u te doen. U kunt deze functies gebruiken door Itertools te importeren. In dit artikel leer je over de Itertools-module in Python en zijn functies.
De officiële Python documentatie legt uit dat Itertools code bevat voor het bouwen van iterators. Deze module biedt snelle en efficiënte functies om met lijsten en arrays te werken.
Voordat u deze module gebruikt, moet u deze importeren met de volgende syntaxis:
itertools importeren
Er zijn drie verschillende soorten iterators aanwezig in deze module.
- Oneindige iteratoren
- Combinatorische iterators
- Iterators beëindigen
Oneindige iteratoren
Oneindige iterators kunnen een lus oneindig laten lopen. Deze functies worden vaker uitgevoerd met a for loop. Er zijn drie oneindige iterators.
1. tellen (begin, stap)
De Graaf() functie heeft twee parameters: de begin en de stap. De lus begint vanaf de startwaarde en retourneert waarden die stapsgewijs worden verhoogd, wat standaard is ingesteld op 1. Beschouw het onderstaande voorbeeld: de lus begint bij 2 en voegt er elke keer 2 toe. De lus breekt wanneer de waarde van l wordt 10.
voor i in itertools.count (2,2):
als ik == 10:
pauze
anders:
print (i, end=" ")
Uitgang:
2 4 6 8
2. herhalen (getal, timesToRepeat)
De herhalen() functie accepteert twee parameters. De eerste is een waarde die de functie herhaaldelijk produceert. De tweede parameter is het aantal keren dat het nummer moet worden herhaald. Als u de tweede parameter niet opgeeft, loopt de lus oneindig.
voor i in itertools.repeat (2,5):
print (i, end=" ")
Uitgang:
2 2 2 2 2
3. cyclus (invoer)
De fiets() functie herhaalt de invoer en drukt afzonderlijke items in een bepaalde volgorde af. Wanneer het het einde van zijn invoer bereikt, fiets begint opnieuw vanaf het begin.
c = 0
var = "12345"
voor i in itertools.cycle (var):
als c == 12:
pauze
anders:
c = c + 1
print (i, end=" ")
Uitgang:
1 2 3 4 5 1 2 3 4 5 1 2
Combinatorische iterators
De combinatorische iterators bieden functies om permutaties, combinaties en cartesische producten uit te voeren.
1. product (invoer)
De Product() functie berekent het cartesiaanse product van de opgegeven invoer. Het heeft een herhalingsparameter die het cartesiaanse product van een iterator met zichzelf berekent. Het is een optionele parameter.
reeks = [1,2,3]
print (lijst (itertools.product (array, repeat=2)))
string = "ABC"
print (lijst (itertools.product (string, "XYZ")))
Uitgang:
Voorbeeld 1 [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
Voorbeeld 2 [('A', 'X'), ('A', 'Y'), ('A', 'Z'), ('B', 'X'), ('B', 'Y '), ('B', 'Z'), ('C', 'X'), ('C', 'Y'), ('C', 'Z')]
2. permutaties (invoer, grootte)
Deze functie retourneert een tuple van alle permutaties van de gegeven iterabele. Het accepteert twee parameters: de iterabele en groepsgrootte. Als de groepsgrootte niet is opgegeven, vormt deze groepen van dezelfde lengte als de iterable zelf.
arr = [1,2,3,4]
print (lijst (itertools.permutaties (arr, 2)))
Uitgang:
[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]
Verwant: Python-functies die u moet kennen
3. combinaties (invoer, lengte)
De combinaties() functie helpt bij het berekenen van de combinaties van de gegeven iterator. Merk op dat deze functie de itemvolgorde van zijn invoer handhaaft. Terwijl permutaties bevat waarden die alleen per bestelling verschillen, combinaties levert unieke waarden op.
arr = [1,2,3,4]
print (lijst (itertools.combinations (arr, 3)))
Uitgang:
[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
Iterators beëindigen
Beëindigende iterators produceren output op basis van de voorwaarden die aan de input worden gegeven. U kunt het het beste begrijpen aan de hand van enkele voorbeeldfuncties.
1. accumuleren (invoer, operator)
De accumuleren() functie accepteert twee argumenten: de iterabele en een operator. Het produceert uitvoer door de operator toe te passen op een cumulatief totaal en elk invoerelement op zijn beurt. De operator is een optioneel argument. Als u er niet voor slaagt, voert deze functie de optelling uit.
importeur
arr = [1,2,3,4]
print (lijst (itertools.accumulate (arr)))
print (lijst (itertools.accumulate (arr, operator.sub)))
Uitgang:
[1, 3, 6, 10]
[1, -1, -4, -8]
2. sterrenkaart (functie, invoer)
De sterrenkaart() functie accepteert een functie en een tupellijst als argumenten. Het berekent retourwaarden door de functie toe te passen op elke tuple in de invoer. In het gegeven voorbeeld berekent deze functie de maximale waarde van elke tuple en retourneert deze in een array.
arr = [(1,2,3), (4,5,6), (7,8,9)]
print (lijst (itertools.starmap (max, arr)))
Uitgang:
[3, 6, 9]
Verwant: Tuples maken en gebruiken in Python
3. filterfalse (functie)
De filterfalse() functie retourneert waarden die niet voldoen aan de voorwaarde in de doorgegeven functie. De onderstaande code verwijdert alle oneven waarden.
arr = [1,2,3,4]
print (lijst (itertools.filterfalse (lambda x: x % 2 != 0, arr)))
Uitgang:
[2, 4]
Vervolg uw Python-coderingsreis
Nu je hebt geleerd over de Itertools-module, is het tijd om andere Python-modules te verkennen. Python heeft modules en bibliotheken voor een breed scala aan taken. Ze omvatten geavanceerde concepten zoals Fourier-transformatie en AI/ML-toepassingen.
Sommige modules zijn ingewikkelder dan andere en zullen meer tijd in beslag nemen om te leren. Met de Tkinter-module kunt u volledige GUI-applicaties bouwen in Python.
Verbeter je Python Tkinter-vaardigheden met dit beginnersproject.
Lees volgende
- Programmeren
- Programmeren
- Python
Unnati is een enthousiaste full-stack developer. Ze houdt ervan om projecten te bouwen met behulp van verschillende programmeertalen. In haar vrije tijd speelt ze graag gitaar en is ze een kookliefhebber.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren