Σύμφωνα με την τεκμηρίωση της Python, το Itertools είναι μια λειτουργική μονάδα Python που παρέχει ένα σύνολο γρήγορων και αποδοτικών εργαλείων μνήμης για εργασία με επαναλήπτες Python. Αυτά τα εργαλεία μπορούν να χρησιμοποιηθούν μόνα τους ή σε συνδυασμό και καθιστούν δυνατή τη συνοπτική και αποτελεσματική δημιουργία και εργασία με επαναλήπτες με γρήγορο και αποδοτικό τρόπο μνήμης.
Η λειτουργική μονάδα Itertools περιέχει λειτουργίες που διευκολύνουν την εργασία με επαναλήπτες, ιδιαίτερα κατά το χειρισμό μεγάλων συνόλων δεδομένων. Οι συναρτήσεις του Itertools μπορούν να λειτουργήσουν σε υπάρχοντες επαναλήπτες για να δημιουργήσουν ακόμη πιο πολύπλοκους επαναλήπτες Python.
Επιπλέον, το Itertools μπορεί να βοηθήσει τους προγραμματιστές να μειώσουν τα σφάλματα κατά την εργασία με επαναλήπτες και να γράφουν πιο καθαρό, ευανάγνωστο και διατηρήσιμο κώδικα.
Με βάση τη λειτουργικότητα που παρέχουν οι επαναλήπτες στη λειτουργική μονάδα Itertools, μπορούν να ταξινομηθούν στους ακόλουθους τύπους:
Πίνακας περιεχομένων
#1. Άπειροι Iterators
Αυτοί είναι επαναλήπτες που σας επιτρέπουν να εργαστείτε με άπειρες ακολουθίες και να εκτελέσετε έναν βρόχο απεριόριστα, εάν δεν υπάρχει συνθήκη για να βγείτε από τον βρόχο. Τέτοιοι επαναλήπτες είναι χρήσιμοι κατά την προσομοίωση άπειρων βρόχων ή τη δημιουργία μιας απεριόριστης ακολουθίας. Το Itertools έχει τρεις άπειρους επαναλήπτες, οι οποίοι περιλαμβάνουν count(), cycle() και repeat().
#2. Συνδυαστικοί Επαναληπτικοί
Οι συνδυαστικοί επαναληπτικοί περιλαμβάνουν συναρτήσεις που μπορούν να χρησιμοποιηθούν για την εργασία σε καρτεσιανά προϊόντα και την εκτέλεση συνδυασμών και μεταθέσεων στοιχείων που περιέχονται σε ένα επαναληπτικό. Αυτές είναι οι βασικές λειτουργίες όταν προσπαθείτε να βρείτε όλους τους πιθανούς τρόπους τακτοποίησης ή συνδυασμού στοιχείων σε ένα επαναληπτικό. Το Itertools έχει τέσσερις συνδυαστικούς επαναλήπτες. Αυτά είναι τα product(), permutations(), combinations() και combinations_with_replacement().
#3. Επαναληπτικοί που τερματίζουν στη συντομότερη ακολουθία εισόδου
Αυτοί είναι τερματικοί επαναλήπτες που χρησιμοποιούνται σε πεπερασμένες ακολουθίες και δημιουργούν μια έξοδο με βάση τον τύπο της συνάρτησης που χρησιμοποιείται. Παραδείγματα αυτών των τερματικών επαναλήψεων περιλαμβάνουν: accumulate(), chain(), chain.from_iterable(), compress(), dropwhile(), filterfalse(), groupby(), islice(), pairwise(), starmap(), takewhile (), tee() και zip_longest().
Ας δούμε πώς λειτουργούν οι διαφορετικές λειτουργίες του Itertools ανάλογα με τον τύπο τους:
Άπειροι Iterators
Οι τρεις άπειροι επαναλήπτες περιλαμβάνουν:
#1. μετρώ()
Η συνάρτηση count (start, step) δημιουργεί μια άπειρη ακολουθία αριθμών που ξεκινούν από την τιμή έναρξης. Η συνάρτηση παίρνει δύο προαιρετικά ορίσματα: start και step. Το όρισμα start ορίζει από όπου πρέπει να ξεκινά η ακολουθία των αριθμών. Από προεπιλογή, ξεκινά από το 0 εάν δεν παρέχεται τιμή έναρξης. βήμα ορίζει τη διαφορά μεταξύ κάθε διαδοχικού αριθμού. Η προεπιλεγμένη τιμή βήματος είναι 1.
import itertools # count starting at 4, making steps of 2 for i in itertools.count(4, 2): # condition to end the loop avoiding infinite looping if i == 14: break else: print(i) # output - 4, 6, 8, 10, 12
Παραγωγή
4 6 8 10 12
#2. κύκλος()
Η συνάρτηση cycle(iterable) παίρνει έναν επαναληπτικό ως όρισμα και μετά περνά μέσα από τον επαναληπτικό επιτρέποντας την πρόσβαση στα στοιχεία του επαναληπτικού με τη σειρά που εμφανίζονται.
Για παράδειγμα, αν περάσουμε μέσα [“red”, “green”, “yellow”] into cycle(), στον πρώτο κύκλο, θα έχουμε πρόσβαση στο “red”? στον δεύτερο κύκλο θα έχουμε πρόσβαση στο «πράσινο», μετά στο «κίτρινο». Στον τέταρτο κύκλο, αφού όλα τα στοιχεία έχουν εξαντληθεί στον επαναληπτικό, θα ξεκινήσουμε από την αρχή στο “κόκκινο” και μετά θα συνεχίσουμε άπειρα.
Όταν καλείτε την cycle() αποθηκεύετε το αποτέλεσμά της σε μια μεταβλητή για να δημιουργήσετε έναν επαναλήπτη που διατηρεί την κατάστασή του. Αυτό διασφαλίζει ότι ο κύκλος δεν ξεκινά από την αρχή κάθε φορά, δίνοντάς σας πρόσβαση μόνο στο πρώτο στοιχείο.
import itertools colors = ["red", "green", "yellow"] # pass in colors into cycle() color_cycle = itertools.cycle(colors) print(color_cycle) # range used to stop the infinite loop once we've printed 7 times # next() used to return the next item from the iterator for i in range(7): print(next(color_cycle))
Παραγωγή:
red green yellow red green yellow red
#3. επαναλαμβάνω()
Το repeat(elem,n) παίρνει δύο ορίσματα, ένα στοιχείο για επανάληψη (elem) και τον αριθμό των φορών που θέλετε να επαναλάβετε το στοιχείο(n). Το στοιχείο που θέλετε να επαναλάβετε μπορεί να είναι μια μεμονωμένη τιμή ή ένας επαναληπτικός. Εάν δεν περάσετε μέσα, n, το στοιχείο θα επαναληφθεί άπειρα.
import itertools for i in itertools.repeat(10, 3): print(i)
Παραγωγή:
10 10 10
Συνδυαστικοί Επαναληπτικοί
Οι συνδυαστικοί επαναλήπτες περιλαμβάνουν:
#1. προϊόν()
Η product() είναι μια συνάρτηση που χρησιμοποιείται για τον υπολογισμό του καρτεσιανού γινόμενου του επαναληπτικού που μεταβιβάστηκε σε αυτό. Αν έχουμε δύο επαναληψίες ή σύνολα, για παράδειγμα, x = {7,8} και y = {1,2,3}, το καρτεσιανό γινόμενο των x και y θα περιέχει όλους τους πιθανούς συνδυασμούς στοιχείων από το x και το y, όπου το Το πρώτο στοιχείο είναι από το x και το δεύτερο από το y. Το καρτεσιανό γινόμενο των x και y σε αυτή την περίπτωση είναι [(7, 1), (7, 2), (7, 3), (8, 1), (8, 2), (8, 3)].
Η product() παίρνει μια προαιρετική παράμετρο που ονομάζεται επανάληψη και χρησιμοποιείται για τον υπολογισμό του καρτεσιανού γινόμενου ενός επαναληπτικού με τον εαυτό του. Επανάληψη καθορίζει τον αριθμό των επαναλήψεων για κάθε στοιχείο από τους επαναληπτικούς αριθμούς εισόδου κατά τον υπολογισμό του καρτεσιανού γινόμενου.
Για παράδειγμα, η κλήση προϊόντος(‘ABCD’, repeat=2) δίνει συνδυασμούς όπως (‘A’, ‘A’), (‘A’, ‘B’), (‘A’, ‘C’) κ.λπ. επί. Εάν η επανάληψη είχε οριστεί στο 3, η συνάρτηση θα έδινε συνδυασμούς όπως (‘A’, ‘A’, ‘A’), (‘A’, ‘A’, ‘B’), (‘A’, ‘A'” , ‘C’), (‘A’, ‘A’, ‘D’) και ούτω καθεξής.
from itertools import product # product() with the optional repeat argument print("product() with the optional repeat argument ") print(list(product('ABC', repeat = 2))) # product with no repeat print("product() WITHOUT an optional repeat argument") print(list(product([7,8], [1,2,3])))
Παραγωγή
product() with the optional repeat argument [('A', 'A'), ('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'B'), ('B', 'C'), ('C', 'A'), ('C', 'B'), ('C', 'C')] product() WITHOUT an optional repeat argument [(7, 1), (7, 2), (7, 3), (8, 1), (8, 2), (8, 3)]
#2. μεταθέσεις ()
permutations(iterable, group_size) επιστρέφει όλες τις πιθανές μεταθέσεις του iterable που έχει περάσει σε αυτό. Μια μετάθεση αντιπροσωπεύει τον αριθμό των τρόπων με τους οποίους μπορούν να ταξινομηθούν τα στοιχεία σε ένα σύνολο. Η permutations() παίρνει ένα προαιρετικό όρισμα group_size. Εάν δεν καθορίζεται group_size, οι μεταθέσεις που δημιουργούνται θα έχουν το ίδιο μέγεθος με το μήκος του iterable που μεταβιβάζεται στη συνάρτηση
import itertools numbers = [1, 2, 3] sized_permutations = list(itertools.permutations(numbers,2)) unsized_permuatations = list(itertools.permutations(numbers)) print("Permutations with a size of 2") print(sized_permutations) print("Permutations with NO size argument") print(unsized_permuatations)
Παραγωγή
Permutations with a group size of 2 [(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)] Permutations with NO size argument [(1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1)]
#3. συνδυασμοί()
combinations(iterable, size) επιστρέφει όλους τους πιθανούς συνδυασμούς ενός iterable δεδομένου μήκους από τα στοιχεία του iterable που μεταβιβάστηκαν στη συνάρτηση. Το όρισμα μέγεθος καθορίζει το μέγεθος κάθε συνδυασμού.
Τα αποτελέσματα είναι διατεταγμένα. Ο συνδυασμός διαφέρει ελαφρώς από τις μεταθέσεις. Με τη μετάθεση, η σειρά έχει σημασία, αλλά με τον συνδυασμό, η σειρά δεν έχει σημασία. Για παράδειγμα, σε [A, B, C] υπάρχουν 6 μεταθέσεις: AB, AC, BA, BC, CA, CB αλλά μόνο 3 συνδυασμοί AB, AC, BC.
import itertools numbers = [1, 2, 3,4] size2_combination = list(itertools.combinations(numbers,2)) size3_combination = list(itertools.combinations(numbers, 3)) print("Combinations with a size of 2") print(size2_combination) print("Combinations with a size of 3") print(size3_combination)
Παραγωγή:
Combinations with a size of 2 [(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)] Combinations with a size of 3 [(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]
#4. combinations_with_replacement()
combinations_with_replacement(iterable, size) δημιουργεί όλους τους πιθανούς συνδυασμούς ενός iterable δεδομένου μήκους από το iterable που μεταβιβάζεται στη συνάρτηση και επιτρέπει επαναλαμβανόμενα στοιχεία στους συνδυασμούς εξόδου. Το μέγεθος καθορίζει το μέγεθος των συνδυασμών που δημιουργούνται.
Αυτή η συνάρτηση διαφέρει από την combinations() στο ότι δίνει συνδυασμούς όπου ένα στοιχείο μπορεί να επαναληφθεί περισσότερες από μία φορές. Για παράδειγμα, μπορείτε να πάρετε έναν συνδυασμό όπως (1,1) που δεν μπορείτε με το συνδυασμό().
import itertools numbers = [1, 2, 3,4] size2_combination = list(itertools.combinations_with_replacement(numbers,2)) print("Combinations_with_replacement => size 2") print(size2_combination)
Παραγωγή
Combinations_with_replacement => size 2 [(1, 1), (1, 2), (1, 3), (1, 4), (2, 2), (2, 3), (2, 4), (3, 3), (3, 4), (4, 4)]
Τερματισμός επαναλήψεων
Αυτό περιλαμβάνει επαναλήψεις όπως:
#1. συσσωρεύω()
accumulate(iterable, function) παίρνει ένα iterable και ένα δεύτερο προαιρετικό όρισμα που είναι συνάρτηση. Στη συνέχεια, επιστρέφει το συσσωρευμένο αποτέλεσμα της εφαρμογής της συνάρτησης σε κάθε επανάληψη σε στοιχεία στον επαναληπτικό. Εάν δεν περάσει καμία συνάρτηση, γίνεται προσθήκη και επιστρέφονται τα συσσωρευμένα αποτελέσματα.
import itertools import operator numbers = [1, 2, 3, 4, 5] # Accumulate the sum of numbers accumulated_val = itertools.accumulate(numbers) accumulated_mul = itertools.accumulate(numbers, operator.mul) print("Accumulate with no function") print(list(accumulated_val)) print("Accumulate with multiplication") print(list(accumulated_mul))
Παραγωγή:
Accumulate with no function [1, 3, 6, 10, 15] Accumulate with multiplication [1, 2, 6, 24, 120]
#2. αλυσίδα()
Το chain(iterable_1, iterable_2, …) παίρνει πολλαπλούς iterables και τους αλυσοδένει μαζί, παράγοντας ένα μόνο iterable που περιέχει τιμές από τους iterables που μεταβιβάζονται στη συνάρτηση chain()
import itertools letters = ['A', 'B', 'C', 'D'] numbers = [1, 2, 3] colors = ['red', 'green', 'yellow'] # Chain letters and numbers together chained_iterable = list(itertools.chain(letters, numbers, colors)) print(chained_iterable)
Παραγωγή:
['A', 'B', 'C', 'D', 1, 2, 3, 'red', 'green', 'yellow']
#3. chain.from_iterable()
chain.from_iterable(iterable) αυτή η συνάρτηση είναι παρόμοια με την chain(). Ωστόσο, διαφέρει από την αλυσίδα στο ότι παίρνει μόνο έναν επαναληπτικό που περιέχει υπο-επαναληφθέντα και τους συνδέει μεταξύ τους.
import itertools letters = ['A', 'B', 'C', 'D'] numbers = [1, 2, 3] colors = ['red', 'green', 'yellow'] iterable = ['hello',colors, letters, numbers] chain = list(itertools.chain.from_iterable(iterable)) print(chain)
Παραγωγή:
['h', 'e', 'l', 'l', 'o', 'red', 'green', 'yellow', 'A', 'B', 'C', 'D', 1, 2, 3]
#4. συμπιέζω()
compress(data, selectors) παίρνει δύο ορίσματα, τα δεδομένα που είναι iterable και τα selectors που είναι iterable που περιέχουν τιμές booleans true και false. Το 1, 0 μπορεί επίσης να χρησιμοποιηθεί ως εναλλακτική στις τιμές boolean true και false. Η compress() φιλτράρει τα δεδομένα που έχουν περάσει χρησιμοποιώντας τα αντίστοιχα στοιχεία που έχουν περάσει στον επιλογέα.
Επιλέγονται οι τιμές στα δεδομένα που αντιστοιχούν στην τιμή true ή 1 στον επιλογέα, ενώ οι υπόλοιπες που αντιστοιχούν σε false ή 0 αγνοούνται. Εάν περάσετε λιγότερα δυαδικά δίκτυα στους επιλογείς από τον αριθμό των στοιχείων στα δεδομένα, όλα τα στοιχεία πέρα από τα περασμένα δυαδικά στους επιλογείς αγνοούνται
import itertools # data has 10 items data = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] # passing in 9 selector items selectors = [True, False, 1, False, 0, 1, True, False, 1] # Select elements from data based on selectors filtered_data = list(itertools.compress(data, selectors)) print(filtered_data)
Παραγωγή:
['A', 'C', 'F', 'G', 'I']
#5. dropwhile()
dropwhile (συνάρτηση, ακολουθία) παίρνει μια συνάρτηση με τη συνθήκη που επιστρέφει true ή false και μια ακολουθία τιμών. Στη συνέχεια ρίχνει όλες τις τιμές έως ότου η συνθήκη που πέρασε επιστρέψει False. Μόλις η συνθήκη επιστρέψει false, τα υπόλοιπα στοιχεία περιλαμβάνονται στα αποτελέσματά της, ανεξάρτητα από το αν θα επέστρεφαν True ή False.
import itertools numbers = [1, 2, 3, 4, 5, 1, 6, 7, 2, 1, 8, 9, 0, 7] # Drop elements until the passed condition is False filtered_numbers = list(itertools.dropwhile(lambda x: x < 5, numbers)) print(filtered_numbers)
Παραγωγή:
[5, 1, 6, 7, 2, 1, 8, 9, 0, 7]
#6. filterfalse()
filterfalse (συνάρτηση, ακολουθία) παίρνει μια συνάρτηση, με μια συνθήκη που αξιολογείται σε true ή false και μια ακολουθία. Στη συνέχεια, επιστρέφει τιμές από την ακολουθία που δεν ικανοποιούν τη συνθήκη στη συνάρτηση.
import itertools numbers = [1, 2, 3, 4, 2, 3 5, 6, 5, 8, 1, 2, 3, 6, 2, 7, 4, 3] # Filter elements for which condition is False filtered_numbers = list(itertools.filterfalse(lambda x: x < 4, numbers)) print(filtered_numbers)
Παραγωγή:
[4, 5, 6, 5, 8, 6, 7, 4]
#7. groupby()
groupby(iterable, κλειδί) παίρνει ένα iterable και ένα κλειδί, στη συνέχεια δημιουργεί έναν επαναλήπτη που επιστρέφει διαδοχικά κλειδιά και ομάδες. Για να λειτουργήσει, το επαναληπτικό που του μεταβιβάστηκε πρέπει να ταξινομηθεί με την ίδια λειτουργία κλειδιού. Η συνάρτηση κλειδιού υπολογιστής μια βασική τιμή για κάθε στοιχείο στον επαναληπτικό.
import itertools input_list = [("Domestic", "Cow"), ("Domestic", "Dog"), ("Domestic", "Cat"),("Wild", "Lion"), ("Wild", "Zebra"), ("Wild", "Elephant")] classification = itertools.groupby(input_list,lambda x: x[0]) for key,value in classification: print(key,":",list(value))
Παραγωγή:
Domestic : [('Domestic', 'Cow'), ('Domestic', 'Dog'), ('Domestic', 'Cat')] Wild : [('Wild', 'Lion'), ('Wild', 'Zebra'), ('Wild', 'Elephant')]
#8. islice()
Το islice(iterable, start, stop, step) σάς επιτρέπει να τεμαχίσετε ένα iterable χρησιμοποιώντας τις τιμές έναρξης, διακοπής και βήματος που έχουν περάσει. Το όρισμα βήμα είναι προαιρετικό. Η μέτρηση ξεκινά από το 0 και το στοιχείο στον αριθμό στάσης δεν περιλαμβάνεται.
import itertools numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18] # Select elements within a range selected_numbers = list(itertools.islice(numbers, 2, 10)) selected_numbers_step= list(itertools.islice(numbers, 2, 10,2)) print("islice without setting a step value") print(selected_numbers) print("islice with a step value of 2") print(selected_numbers_step)
Παραγωγή:
islice without setting a step value [3, 4, 5, 6, 7, 8, 9, 10] islice with a step value of 2 [3, 5, 7, 9]
#9. Pairwise ()
Pairwise(iterable) επιστρέφει διαδοχικά επικαλυπτόμενα ζεύγη που λαμβάνονται από τον επαναληπτικό που του μεταβιβάστηκε με τη σειρά που εμφανίζονται στον επαναληπτικό. Εάν το iterable που του μεταβιβάστηκε έχει λιγότερες από δύο τιμές, το αποτέλεσμα από το pairwise() θα είναι κενό.
from itertools import pairwise numbers = [1, 2, 3, 4, 5, 6, 7, 8] word = 'WORLD' single = ['A'] print(list(pairwise(numbers))) print(list(pairwise(word))) print(list(pairwise(single)))
Παραγωγή:
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)] [('W', 'O'), ('O', 'R'), ('R', 'L'), ('L', 'D')] []
#10. starmap()
Το starmap(function, iterable) είναι μια συνάρτηση που χρησιμοποιείται αντί για map() όταν οι παράμετροι ορίσματος είναι ήδη ομαδοποιημένες σε πλειάδες. Η startmap() εφαρμόζει μια συνάρτηση στα στοιχεία του iterable που μεταβιβάζονται σε αυτήν. Ο επαναληπτικός θα πρέπει να έχει στοιχεία ομαδοποιημένα σε πλειάδες.
import itertools iter_starmap = [(123, 63, 13), (5, 6, 52), (824, 51, 9), (26, 24, 16), (14, 15, 11)] print (list(itertools.starmap(min, iter_starmap)))
Παραγωγή:
[13, 5, 9, 16, 11]
#11. takewhile ()
Το takewhile(function, iterable) λειτουργεί με τον αντίθετο τρόπο από το dropwhile(). Η takewhile() παίρνει μια συνάρτηση με συνθήκη προς αξιολόγηση και επαναληπτικό. Στη συνέχεια, περιλαμβάνει όλα τα στοιχεία στον επαναληπτικό που ικανοποιούν τη συνθήκη στη συνάρτηση μέχρι να επιστραφεί το False. Μόλις επιστραφεί το False, όλα τα ακόλουθα στοιχεία του iterable αγνοούνται.
import itertools numbers = [1, 2, 3, 4, 5, 1, 6, 7, 2, 1, 8, 9, 0, 7] # Drop elements until the passed condition is False filtered_numbers = list(itertools.takewhile(lambda x: x < 5, numbers)) print(filtered_numbers)
Παραγωγή:
[1, 2, 3, 4]
#12. στόχος()
Το tee(iterable, n) δέχεται έναν επαναληπτικό και επιστρέφει πολλαπλούς ανεξάρτητους επαναλήπτες. Ο αριθμός των επαναλήψεων που θα επιστρέψουν ορίζεται από n, που από προεπιλογή είναι 2.
import itertools numbers = [1, 2, 3, 4, 5] # Create two independent iterators from numbers iter1, iter2 = itertools.tee(numbers, 2) print(list(iter1)) print(list(iter2))
Παραγωγή:
[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
#13. zip_longest()
zip_longest(iterables, fillvalue) παίρνει πολλούς επαναλήπτες και μια τιμή συμπλήρωσης. Στη συνέχεια, επιστρέφει έναν επαναλήπτη που συγκεντρώνει στοιχεία από κάθε έναν από τους επαναλήπτες που του έχουν περάσει. Εάν οι επαναληπτικοί δεν έχουν το ίδιο μήκος, οι τιμές που λείπουν αντικαθίστανται από την τιμή συμπλήρωσης που μεταβιβάζεται στη συνάρτηση μέχρι να εξαντληθεί ο μεγαλύτερος επαναληπτικός.
import itertools names = ['John', 'mathew', 'mary', 'Alice', 'Bob', 'Charlie', 'Fury'] ages = [25, 30, 12, 13, 42] # Combine name and ages, filling in missing ages with a dash combined = itertools.zip_longest(names, ages, fillvalue="-") for name, age in combined: print(name, age)
Παραγωγή:
John 25 mathew 30 mary 12 Alice 13 Bob 42 Charlie - Fury -
συμπέρασμα
Τα Python itertools είναι ένα σημαντικό σύνολο εργαλείων για έναν προγραμματιστή Python. Τα itertools της Python χρησιμοποιούνται εκτενώς στον λειτουργικό προγραμματισμό, την επεξεργασία και τον μετασχηματισμό δεδομένων, το φιλτράρισμα και την επιλογή δεδομένων, την ομαδοποίηση και τη συγκέντρωση, τον συνδυασμό επαναλήψεων, συνδυαστικά και κατά την εργασία με άπειρες ακολουθίες.
Ως προγραμματιστής Python, θα ωφεληθείτε πολύ μαθαίνοντας για τα itertools, γι’ αυτό φροντίστε να χρησιμοποιήσετε αυτό το άρθρο για να εξοικειωθείτε με τα Python Itertools.