Quel est l'analogue de la fonction zipWith de Haskell en Python?
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
Quel est l'analogue de la fonction zipWith de Haskell en Python?
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
Généralement, comme d'autres l'ont mentionné carte et zip peut vous aider à reproduire la fonctionnalité de zipWith comme dans Haskel.
Généralement, vous pouvez soit appliquer un définies opérateur binaire ou certaines fonction binaire sur deux de la liste.Un exemple pour remplacer un Haskel zipWith avec Python carte/zip
Input: zipWith (+) [1,2,3] [3,2,1]
Output: [4,4,4]
>>> map(operator.add,[1,2,3],[4,3,2])
[5, 5, 5]
>>> [operator.add(x,y) for x,y in zip([1,2,3],[4,3,2])]
[5, 5, 5]
>>>
Il existe d'autres variations de zipWith aka zipWith3, zipWith4 .... zipWith7. Pour reproduire ces functionalists vous souhaiterez peut-être utiliser izip et imap au lieu de zip et de la carte.
>>> [x for x in itertools.imap(lambda x,y,z:x**2+y**2-z**2,[1,2,3,4],[5,6,7,8],[9,10,11,12])]
>>> [x**2+y**2-z**2 for x,y,z in itertools.izip([1,2,3,4],[5,6,7,8],[9,10,11,12])]
[-55, -60, -63, -64]
Comme vous pouvez le voir, vous pouvez opérer de n'importe quel nombre de la liste que vous désirez et vous pouvez toujours utiliser la même procédure.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.