J'ai récemment vu du Clojure ou du Scala (désolé, je ne les connais pas) et ils se sont glissés sur une liste ou quelque chose comme ça. Qu'est-ce que le zip et d'où vient-il?
Réponses
Trop de publicités?Zip, c'est quand vous prenez deux séquences entrées, et de produire une séquence de sortie dans lequel toutes les deux éléments de l'entrée des séquences à la même position sont combinées à l'aide d'une fonction. Un exemple en Haskell:
Entrée:
zipWith (+) [1, 2, 3] [4, 5, 6]
Sortie:
[5, 7, 9]
Le ci-dessus est une définition plus générique; parfois, zip
se réfère spécifiquement à une combinaison d'éléments comme des n-uplets. E. g. en Haskell à nouveau:
Entrée:
zip [1, 2, 3] [4, 5, 6]
Sortie:
[(1, 4), (2, 5), (3, 6)]
Et le plus générique version est appelée "zip avec". De toute évidence, "zip" est un cas particulier de "zipWith":
zip xs ys = zipWith (\x y -> (xs, ys)) xs ys
zip est une commune de la programmation fonctionnelle, méthode comme une carte ou un pli. Vous trouverez ces fonctions au début de lisps tout le chemin jusqu'à ruby et python. Ils sont conçus pour effectuer des communes de lot opérations sur les listes.
Dans ce cas particulier, zip prend deux listes crée une nouvelle liste de tuples à partir de ces listes.
par exemple, disons que vous avez eu une liste avec (1,2,3) et une autre ("un","deux","trois") Si vous zip, vous obtiendrez la Liste((1,"un"), (2,"deux"), (3,"trois"))
ou de la scala de ligne de commande, vous obtiendrez:
scala> List(1,2,3).zip(List("one","two","three"))
res2: List[(Int, java.lang.String)] = List((1,one), (2,two), (3,three))
Quand j'ai vu pour la première fois en Python, sans connaître la programmation fonctionnelle, je pensais que c'était lié au format de la compression. Après j'en ai appris plus sur la programmation fonctionnelle, j'ai utilisé de plus en plus.