Τι είναι οι συναρτήσεις Python Itertools;

Σύμφωνα με την τεκμηρίωση της 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

Συνδυαστικοί Επαναληπτικοί

Οι συνδυαστικοί επαναλήπτες περιλαμβάνουν:

  Πώς να βρείτε ρούχα ανά εικόνα [8 Outfit Finder Apps]

#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 που μεταβιβάζεται στη συνάρτηση και επιτρέπει επαναλαμβανόμενα στοιχεία στους συνδυασμούς εξόδου. Το μέγεθος καθορίζει το μέγεθος των συνδυασμών που δημιουργούνται.

  Διορθώστε προβλήματα με τον κατοπτρισμό οθόνης του Amazon Firestick

Αυτή η συνάρτηση διαφέρει από την 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 χρησιμοποιούνται εκτενώς στον λειτουργικό προγραμματισμό, την επεξεργασία και τον μετασχηματισμό δεδομένων, το φιλτράρισμα και την επιλογή δεδομένων, την ομαδοποίηση και τη συγκέντρωση, τον συνδυασμό επαναλήψεων, συνδυαστικά και κατά την εργασία με άπειρες ακολουθίες.

  11 Καλύτερος Πίνακας Ελέγχου που βασίζεται σε Cloud για τη Διαχείριση Διακομιστών και Ιστοσελίδων

Ως προγραμματιστής Python, θα ωφεληθείτε πολύ μαθαίνοντας για τα itertools, γι’ αυτό φροντίστε να χρησιμοποιήσετε αυτό το άρθρο για να εξοικειωθείτε με τα Python Itertools.