Πώς να χρησιμοποιήσετε τη λειτουργία Zip στη Python

How Use Zip Function Python



Αυτό το άρθρο θα καλύψει έναν οδηγό για τη λειτουργία zip που διατίθεται στην τυπική βιβλιοθήκη λειτουργικών μονάδων της Python. Αυτή η μέθοδος σας επιτρέπει να συνδυάσετε και να αντιστοιχίσετε στοιχεία πολλαπλών επαναλαμβανόμενων αντικειμένων. Στη συνέχεια, μπορείτε να εκτελέσετε περαιτέρω λογική σε αυτά τα ζεύγη. Σε πολλές περιπτώσεις, η χρήση μιας λειτουργίας zip είναι πολύ πιο αποτελεσματική και καθαρότερη από τη χρήση πολλαπλών, ένθετων για βρόχους.

Σχετικά με τη λειτουργία 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 ')]

συμπέρασμα

Η λειτουργία φερμουάρ μπορεί να εξομοιωθεί χρησιμοποιώντας ορισμένες βρόχους και δηλώσεις συνθηκών. Ωστόσο, βοηθά στη διατήρηση του κώδικα οργανωμένου και καθαρότερου, αφαιρώντας περιττές δηλώσεις και επαναλαμβανόμενες δηλώσεις.