Pourquoi ne x,y = zip(*zip(a,b)) travail en Python?

OK j'adore Python zip() fonction. L'utiliser tout le temps, c'est génial. Chaque maintenant et encore, je veux faire le contraire de zip(), pense "que j'ai utilisé pour savoir comment le faire", puis google python décompressez, puis rappelez-vous que l'on utilise cette magique * pour décompresser une zippée liste de tuples. Comme ceci:

x = [1,2,3]
y = [4,5,6]
zipped = zip(x,y)
unzipped_x, unzipped_y = zip(*zipped)
unzipped_x
    Out[30]: (1, 2, 3)
unzipped_y
    Out[31]: (4, 5, 6)

Ce qui sur terre se passe? Ce qui est magique astérisque faire? Où d'autre peut-il être appliqué et que d'autres belles choses incroyables en Python sont si mystérieux et difficile à google?

  • Dupliquer: stackoverflow.com/questions/2233204/...
  • oh ouais. C'est exactement le problème, la recherche de stackoverflow pour zip(* python n'a pas de retour de la double question sur la première page, et googler pour python * ou python zip(* ne retourne pas beaucoup j'imagine, parce que la (* est ignoré? Vous avez raison de bien, quelqu'un d'autre aussi pensé que c'était génial. Dois-je supprimer la question?
  • Je n'aurais pas le supprimer car il les rangs supérieur à la recherche pour une raison quelconque. Fermeture elle permettrait d'assurer une redirection.
  • J'ai trouvé le lien dans ma réponse par la recherche "site:docs.python.org astérisque". Le mot "astérisque" est beaucoup plus facile pour les moteurs de recherche que d'une réelle astérisque. 🙂
  • "ce que d'autres belles choses incroyables en Python sont si mystérieux et difficile à google?" Découvrez: stackoverflow.com/questions/101268/hidden-features-of-python pour la réponse 🙂
InformationsquelleAutor Mike Dewar | 2010-03-24