Σχετικά με τη λειτουργία Zip
Όπως προαναφέρθηκε, η συνάρτηση zip χρησιμοποιείται για τη δημιουργία ζευγών από στοιχεία πολλαπλών επαναλήψιμων αντικειμένων. Εξετάστε το παρακάτω παράδειγμα για να κατανοήσετε τη βασική σύνταξη και τη χρήση της λειτουργίας zip:
λίστα 1= ['προς το', 'σι', 'ντο']
λίστα 2= ['μήλο', 'μπάλα', 'Γάτα']
φερμουάρ= φερμουάρ(λίστα 1,λίστα 2)
Τυπώνω (λίστα(φερμουάρ))
Οι δύο πρώτες προτάσεις στο παραπάνω δείγμα κώδικα ορίζουν δύο λίστες που περιέχουν ορισμένα στοιχεία. Στη συνέχεια, η λειτουργία zip χρησιμοποιείται περνώντας μεταβλητές list1 και list2 ως επιχειρήματα. Αυτή είναι η κύρια σύνταξη της συνάρτησης zip. Απλώς πρέπει να περάσετε λίστες ή άλλα έγκυρα ταξινομημένα εγχειρίδια ως ορίσματα των οποίων τα στοιχεία θέλετε να συνδυάσετε. Τέλος, η δήλωση εκτύπωσης χρησιμοποιείται για να πάρει την έξοδο της μεταβλητής με συμπίεση. Αφού εκτελέσετε το δείγμα κώδικα που αναφέρθηκε παραπάνω, θα πρέπει να λάβετε την ακόλουθη έξοδο:
[(«α», «μήλο»), («β», «μπάλα»), («γ», «γάτα»)]
Σημειώστε ότι η συνάρτηση zip επιστρέφει ένα αντικείμενο τύπου zip και όχι μια λίστα. Πρέπει να το μετατρέψετε σε επαναλαμβανόμενο τύπο, όπως φαίνεται στην παραπάνω δήλωση εκτύπωσης.
Με απλά λόγια, η συνάρτηση zip συλλέγει στοιχεία του ίδιου ευρετηρίου από δύο λίστες και τα συνδυάζει ως ζεύγος σε πλειάδα. Έτσι, το 0ο στοιχείο από τη λίστα1 συνδυάζεται με το 0ο στοιχείο της λίστας2, το 1ο στοιχείο από τη λίστα1 συνδυάζεται με το 1ο στοιχείο της λίστας2 και ούτω καθεξής. Η συνάρτηση Zip μετακινείται από αριστερά προς τα δεξιά και η πλειάδα που περιέχει ζευγαρωμένα στοιχεία έχει τον ίδιο δείκτη με τα στοιχεία που είναι αποθηκευμένα σε αυτά.
Χρήση του Zip όταν τα Iterables δεν έχουν τον ίδιο αριθμό στοιχείων
Στο παραπάνω παράδειγμα, και οι δύο λίστες έχουν τον ίδιο αριθμό στοιχείων. Σε περίπτωση που ασχολείστε με κάποιον κώδικα όπου και οι δύο λίστες δεν έχουν τον ίδιο αριθμό στοιχείων, η λειτουργία zip θα σταματήσει στο τελευταίο στοιχείο της λίστας με τον μικρότερο αριθμό στοιχείων.
Στο παρακάτω παράδειγμα, η λειτουργία zip θα σταματήσει στο στοιχείο c, ανεξάρτητα από τη λίστα2 που έχει ένα ακόμη στοιχείο.
λίστα 1= ['προς το', 'σι', 'ντο']
λίστα 2= ['μήλο', 'μπάλα', 'Γάτα', 'κούκλα']
φερμουάρ= φερμουάρ(λίστα 1,λίστα 2)
Τυπώνω (λίστα(φερμουάρ))
Αφού εκτελέσετε το δείγμα κώδικα που αναφέρθηκε παραπάνω, θα πρέπει να λάβετε την ακόλουθη έξοδο:
[(«α», «μήλο»), («β», «μπάλα»), («γ», «γάτα»)]Μπορείτε να χρησιμοποιήσετε περισσότερα από δύο Iterables όταν χρησιμοποιείτε τη λειτουργία Zip
Συνήθως, η λειτουργία zip χρησιμοποιείται για τη σύγκριση δύο επαναλαμβανόμενων αντικειμένων. Ωστόσο, μπορείτε να περάσετε οποιονδήποτε αριθμό επαναλαμβανόμενων ως ορίσματα στη συνάρτηση zip. Η αρχή της στάσης στο τελευταίο στοιχείο του συντομότερου καταλόγου θα εξακολουθήσει να ισχύει.
λίστα 1= ['προς το', 'σι', 'ντο']λίστα 2= ['μήλο', 'μπάλα', 'Γάτα', 'κούκλα']
λίστα 3= ['5', '3']
φερμουάρ= φερμουάρ(λίστα 1,λίστα 2,λίστα 3)
Τυπώνω (λίστα(φερμουάρ))
Αφού εκτελέσετε το δείγμα κώδικα που αναφέρθηκε παραπάνω, θα πρέπει να λάβετε την ακόλουθη έξοδο ως αποτέλεσμα:
[(«α», «μήλο», «5»), («β», «μπάλα», «3»)]Δημιουργία μεμονωμένων λιστών από αντικείμενο τύπου Zip
Εάν έχετε ήδη ένα αντικείμενο zip, μπορείτε να το χρησιμοποιήσετε για να ξαναπληρώσετε μεμονωμένες λίστες που χρησιμοποιήθηκαν νωρίτερα όταν η λειτουργία zip κλήθηκε για πρώτη φορά σε αυτές.
λίστα 1= ['προς το', 'σι', 'ντο']λίστα 2= ['μήλο', 'μπάλα', 'Γάτα', 'κούκλα']
λίστα 3= ['5', '3']
φερμουάρ= φερμουάρ(λίστα 1,λίστα 2,λίστα 3)
l1,l2,l3= φερμουάρ(*φερμουάρ)
Τυπώνω (λίστα(l1), λίστα(l2), λίστα(l3))
Αφού εκτελέσετε το δείγμα κώδικα που αναφέρθηκε παραπάνω, θα πρέπει να λάβετε την ακόλουθη έξοδο ως αποτέλεσμα:
['a', 'b'] ['μήλο', 'μπάλα'] ['5', '3']Στο παραπάνω δείγμα κώδικα, το αντικείμενο zip ξεφουσκώνει χρησιμοποιώντας τον τελεστή *. Τα ξεφουσκωμένα αποτελέσματα στη συνέχεια τροφοδοτούνται σε μια άλλη λειτουργία κλήσης σε zip που δημιουργεί αρχικές λίστες. Λάβετε υπόψη ότι ενδέχεται να μην επιστρέψετε όλα τα στοιχεία στις αρχικές λίστες εάν χρησιμοποιήθηκαν λίστες άνισου μήκους όταν δημιουργήθηκε το αντικείμενο zip για πρώτη φορά.
Χρήση του Zip όταν θέλετε να κρατήσετε τα στοιχεία από το μεγαλύτερο χρονικό διάστημα
Σε πολλά παραδείγματα παραπάνω, μπορεί να έχετε παρατηρήσει ότι η λειτουργία zip από προεπιλογή σταματά στο τελευταίο στοιχείο του συντομότερου επαναλήψιμου. Τι γίνεται αν θέλετε να συνεχίσει να επαναλαμβάνεται μέχρι να φτάσει στο τελευταίο στοιχείο της μεγαλύτερης διάρκειας;
Σε μια τέτοια περίπτωση, θα πρέπει να χρησιμοποιήσετε τη μέθοδο zip_longest () από τη μονάδα itertools της Python. Λειτουργεί το ίδιο με τη λειτουργία zip, με μια μικρή διαφορά ότι σταματά στο τελευταίο στοιχείο του μεγαλύτερου επαναλαμβανόμενου τύπου.
από itertools εισαγωγήzip_longestλίστα 1= ['προς το', 'σι', 'ντο']
λίστα 2= ['μήλο', 'μπάλα', 'Γάτα', 'κούκλα']
λίστα 3= ['5', '3']
φερμουάρ=zip_longest(λίστα 1,λίστα 2,λίστα 3)
Τυπώνω (λίστα(φερμουάρ))
Αφού εκτελέσετε το δείγμα κώδικα που αναφέρθηκε παραπάνω, θα πρέπει να λάβετε την ακόλουθη έξοδο ως αποτέλεσμα:
[(«α», «μήλο», «5»), («β», «μπάλα», «3»), («γ», «γάτα», Κανένας), (Κανένας, «κούκλα», Κανένας) ]Οι τιμές που λείπουν συμπληρώνονται ως αντικείμενα κανενός τύπου. Μπορείτε επίσης να δώσετε τη δική σας τιμή για συμπλήρωση περνώντας ένα επιπλέον όρισμα fillvalue στη μέθοδο zip_longest.
από itertools εισαγωγήzip_longestλίστα 1= ['προς το', 'σι', 'ντο']
λίστα 2= ['μήλο', 'μπάλα', 'Γάτα', 'κούκλα']
λίστα 3= ['5', '3']
φερμουάρ=zip_longest(λίστα 1,λίστα 2,λίστα 3,αξία πλήρωσης='my_value')
Τυπώνω (λίστα(φερμουάρ))
Αφού εκτελέσετε το δείγμα κώδικα που αναφέρθηκε παραπάνω, θα πρέπει να λάβετε την ακόλουθη έξοδο ως αποτέλεσμα:
[('a', 'apple', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'doll ',' my_value ')]συμπέρασμα
Η λειτουργία φερμουάρ μπορεί να εξομοιωθεί χρησιμοποιώντας ορισμένες βρόχους και δηλώσεις συνθηκών. Ωστόσο, βοηθά στη διατήρηση του κώδικα οργανωμένου και καθαρότερου, αφαιρώντας περιττές δηλώσεις και επαναλαμβανόμενες δηλώσεις.