Je pense avoir trouvé une solution en utilisant uniquement lambdas
, map
y reduce
.
product_function = lambda n: reduce(lambda x, y: x+y, map(lambda i: list(map(lambda j: (i, j), np.arange(n))), np.arange(n)), [])
Essentiellement, je fais correspondre une première fonction lambda qui, étant donné une ligne, itère les colonnes.
list(map(lambda j: (i, j), np.arange(n)))
puis il est utilisé comme sortie d'une nouvelle fonction lambda
lambda i:list(map(lambda j: (i, j), np.arange(n)))
qui est mappé à travers toutes les lignes possibles
map(lambda i: list(map(lambda j: (i, j), np.arange(n))), np.arange(m))
et ensuite nous réduisons toutes les listes résultantes en une seule.
encore mieux
On peut aussi utiliser deux numéros différents.
prod= lambda n, m: reduce(lambda x, y: x+y, map(lambda i: list(map(lambda j: (i, j), np.arange(m))), np.arange(n)), [])