zip() en Python
Méthode Python zip() prend des conteneurs itérables et renvoie un seul objet itérateur, ayant les valeurs mappées de tous les conteneurs.
Syntaxe Python zip()
Il est utilisé pour mapper l'index similaire de plusieurs conteneurs afin qu'ils puissent être utilisés uniquement en utilisant une seule entité.
Syntaxe : zip(*itérateurs)
Paramètres : Itérables ou conteneurs Python (liste, chaîne, etc.)
Valeur de retour : Renvoie un seul objet itérateur.
zip() dans les exemples Python
Python zip() avec des listes
Dans Python , la fonction zip() est utilisée pour combiner deux ou plusieurs listes (ou tout autre itérable) en un seul itérable, où les éléments des positions correspondantes sont appariés. L'itérable résultant contient tuples , où le premier élément de chaque liste est associé, le deuxième élément de chaque liste est associé, et ainsi de suite.
Python3
name> => [> 'Manjeet'> ,> 'Nikhil'> ,> 'Shambhavi'> ,> 'Astha'> ]> roll_no> => [> 4> ,> 1> ,> 3> ,> 2> ]> # using zip() to map values> mapped> => zip> (name, roll_no)> print> (> set> (mapped))> |
Sortir
{('Nikhil', 1), ('Shambhavi', 3), ('Manjeet', 4), ('Astha', 2)} Python zip() avec énumération
La combinaison de zip() et énumérer() est utile dans les scénarios dans lesquels vous souhaitez traiter plusieurs listes ou tuples en parallèle et devez également accéder à leurs index à des fins spécifiques.
Python3
names> => [> 'Mukesh'> ,> 'Roni'> ,> 'Chari'> ]> ages> => [> 24> ,> 50> ,> 18> ]> for> i, (name, age)> in> enumerate> (> zip> (names, ages)):> > print> (i, name, age)> |
Sortir
0 Mukesh 24 1 Roni 50 2 Chari 18
Python zip() avec dictionnaire
La fonction zip() en Python est utilisée pour combiner deux ou plusieurs itérables dictionnaires en un seul itérable, où les éléments correspondants de l'itérable d'entrée sont associés sous forme de tuples. Lorsque vous utilisez zip() avec des dictionnaires, il associe les clés et les valeurs des dictionnaires en fonction de leur position dans le dictionnaire.
Python3
stocks> => [> 'GEEKS'> ,> 'For'> ,> 'geeks'> ]> prices> => [> 2175> ,> 1127> ,> 2750> ]> new_dict> => {stocks: prices> for> stocks,> > prices> in> zip> (stocks, prices)}> print> (new_dict)> |
Sortir
{'GEEKS': 2175, 'For': 1127, 'geeks': 2750} Python zip() avec Tuple
Lorsqu'il est utilisé avec des tuples, fermeture éclair() fonctionne en associant les éléments des tuples en fonction de leurs positions. L'itérable résultant contient des tuples où le i-ème tuple contient le i-ème élément de chaque tuple d'entrée.
Python3
tuple1> => (> 1> ,> 2> ,> 3> )> tuple2> => (> 'a'> ,> 'b'> ,> 'c'> )> zipped> => zip> (tuple1, tuple2)> result> => list> (zipped)> print> (result)> |
Sortir:
[(1, 'a'), (2, 'b'), (3, 'c')]
Python zip() avec plusieurs itérables
La fonction zip() de Python peut également être utilisée pour combiner plus de deux itérables. Il peut prendre plusieurs itérables en entrée et renvoyer un itérable de tuples, où chaque tuple contient des éléments des positions correspondantes des itérables d'entrée.
Python3
list1> => [> 1> ,> 2> ,> 3> ]> list2> => [> 'a'> ,> 'b'> ,> 'c'> ]> list3> => [> 'x'> ,> 'y'> ,> 'z'> ]> zipped> => zip> (list1, list2, list3)> result> => list> (zipped)> print> (result)> |
Sortir
[(1, 'a', 'x'), (2, 'b', 'y'), (3, 'c', 'z')]
Compresser des listes de taille inégale
La fonction zip() parcourra uniquement la plus petite liste passée. Si on lui donne des listes de longueurs différentes, la combinaison résultante ne sera aussi longue que la plus petite liste passée. Dans l'exemple de code suivant :
Python3
# Define lists for 'persons', 'genders', and a tuple for 'ages'> persons> => [> 'Chandler'> ,> 'Monica'> ,> 'Ross'> ,> 'Rachel'> ,> 'Joey'> ,> 'Phoebe'> ,> 'Joanna'> ]> genders> => [> 'Male'> ,> 'Female'> ,> 'Male'> ,> 'Female'> ,> 'Male'> ,> 'Female'> ,> 'Female'> ]> ages> => (> 35> ,> 36> ,> 38> ,> 34> )> # Create a zipped object combining the 'persons' and 'genders'> #lists along with the 'ages' tuple> zipped_result> => zip> (persons, genders, ages)> # Print the zipped object> print> (> 'Zipped result as a list:'> )> for> i> in> list> (zipped_result):> > print> (i)> |
Sortir
Zipped result as a list: ('Chandler', 'Male', 35) ('Monica', 'Female', 36) ('Ross', 'Male', 38) ('Rachel', 'Female', 34) Décompression à l'aide de zip()
Décompresser signifie reconvertir les valeurs compressées en leur individu tel qu'il était. Cela se fait avec l'aide de * opérateur.
Python3
# initializing lists> name> => [> 'Manjeet'> ,> 'Nikhil'> ,> 'Shambhavi'> ,> 'Astha'> ]> roll_no> => [> 4> ,> 1> ,> 3> ,> 2> ]> marks> => [> 40> ,> 50> ,> 60> ,> 70> ]> # using zip() to map values> mapped> => zip> (name, roll_no, marks)> # converting values to print as list> mapped> => list> (mapped)> # printing resultant values> print> (> 'The zipped result is : '> , end> => '')> print> (mapped)> print> (> '
'> )> # unzipping values> namz, roll_noz, marksz> => zip> (> *> mapped)> print> (> 'The unzipped result:
'> , end> => '')> # printing initial lists> print> (> 'The name list is : '> , end> => '')> print> (namz)> print> (> 'The roll_no list is : '> , end> => '')> print> (roll_noz)> print> (> 'The marks list is : '> , end> => '')> print> (marksz)> |
Sortir
The zipped result is : [('Manjeet', 4, 40), ('Nikhil', 1, 50), ('Shambhavi', 3, 60), ('Astha', 2, 70)] The unzipped result: The name list is : ('Manjeet', 'Nikhil', 'Shambhavi', 'Astha') The roll_no list is : (4, 1, 3, 2) The marks list is : (40, 50, 60, 70) Utiliser zip() avec des boucles Python
Il existe de nombreuses applications possibles qui peuvent être exécutées à l'aide de zip, que ce soit base de données des étudiants ou carte de pointage ou tout autre utilitaire nécessitant un mappage de groupes. Un petit exemple de tableau de bord est présenté ci-dessous.
Python3
# Python code to demonstrate the application of> # zip()> # initializing list of players.> players> => [> 'Sachin'> ,> 'Sehwag'> ,> 'Gambhir'> ,> 'Dravid'> ,> 'Raina'> ]> # initializing their scores> scores> => [> 100> ,> 15> ,> 17> ,> 28> ,> 43> ]> # printing players and scores.> for> pl, sc> in> zip> (players, scores):> > print> (> 'Player : %s Score : %d'> %> (pl, sc))> |
Sortir
Player : Sachin Score : 100 Player : Sehwag Score : 15 Player : Gambhir Score : 17 Player : Dravid Score : 28 Player : Raina Score : 43