Ayant un faible pour la programmation fonctionnelle, j'ai tout de suite pensé à flatmap. Python ne possède pas de flatmap en standard, mais j'ai fait un peu de Scala dernièrement. Dans ce language, les for-comprehensions ne sont que du sucre syntaxique pour flatmap/map/filter. Comme en Scala, on peut donc aussi traduire un flatmap par une compréhension en Python, ce qui nous donne:
[e for c,n in zip(liste0, nb_occ) for e in c*n]
EDIT: Quant à flatmap:
1 2 3 4 5
| def flatmap(f, l, *args):
return [x for arg in zip(l, *args) for x in f(*arg)]
import operator
flatmap(operator.mul, liste0, nb_occ) |
Partager