Questa risposta spiega il motivo per cui non si desidera utilizzare reduce
per questo in Python.
Si consideri il frammento di
reduce(operator.add, [[1], [2], [3], [4], [5]])
Che cosa ha a che fare?
[1] + [2] => [1, 2]
[1, 2] + [3] => This makes a new list, having to go over 1, then 2, then 3. [1, 2, 3]
[1, 2, 3] + [4] => This has to copy the 1, 2, and 3 and then put 4 in the new list
[1, 2, 3, 4] + [5] => The length of stuff I have to copy gets bigger each time!
Questo comportamento quadratico è completamente evitabile: la soluzione originale (e qualsiasi numero di altre soluzioni) non costituisce questi passaggi di copia intermedi.
fonte
2010-03-18 17:54:36
Prova a utilizzare quattro spazi anziché uno per il rientro. È più leggibile e si conformerà alle linee guida di stile utilizzate per la maggior parte del codice Python. (La guida di stile cui la maggior parte del codice Python è conforme è http://www.python.org/dev/peps/pep-0008/) –
Domande correlate: "Flatten (un elenco irregolare) di elenchi in Python" http: // stackoverflow .com/questions/2158395/flatten-an-irregular-list-of-lists-in-python (link ad altre domande e buone risposte) "Appiattire una lista poco profonda in python" http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python (benchmark) – jfs