È possibile creare una lista di liste quindi utilizzare ridurre a unirsi a loro.
print [[n,n*n] for n in range (10)]
[[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
print reduce(lambda x1,x2:x1+x2,[[n,n*n] for n in range (10)])
[0, 0, 1, 1, 2, 4, 3, 9, 4, 16, 5, 25, 6, 36, 7, 49, 8, 64, 9, 81]
print reduce(lambda x1,x2:x1+x2,[[n**e for e in range(1,4)]\
for n in range (1,10)])
[1, 1, 1, 2, 4, 8, 3, 9, 27, 4, 16, 64, 5, 25, 125, 6, 36, 216, 7, 49, 343, 8, 64, 512, 9, 81, 729]
Riduci prende un'espressione callable che accetta due argomenti ed elabora una sequenza iniziando dai primi due elementi. Il risultato dell'ultima espressione viene quindi utilizzato come primo elemento nelle chiamate successive. In questo caso ogni elenco viene aggiunto uno dopo l'altro al primo elenco nell'elenco di elenchi e quindi tale elenco viene restituito come risultato.
di lista implicitamente chiamano mappa con un'espressione lambda utilizzando la variabile e la sequenza definita dalla "per var in sequenza" espressione. Quello che segue è lo stesso tipo di cosa.
map(lambda n:[n,n*n],range(1,10))
[[1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
Non sono a conoscenza di un'espressione python più naturale da ridurre.
che ti capita illeggibili, soluzioni Oneliner. Avviso tardivo dato: P – ytpillai