La funzione reduce()
può essere sempre sostituita da un ciclo for
. Ecco un'implementazione di Python di reduce()
:
def reduce(function, iterable, start=None):
iterator = iter(iterable)
if start is None:
start = next(iterator)
for x in iterator:
start = function(start, x)
return start
(. In contrasto con la versione di Python built-in di reduce()
, questa versione non permette di passare in None
come start
parametro)
Special-involucro questo codice con i parametri passati al reduce()
dà
def subsets(my_set):
result = [[]]
for x in my_set:
result = result + [y + [x] for y in result]
return result
fonte
2012-02-25 23:25:10
'reduce()' è ancora lì - è stato spostato in 'functools'. –
@SvenMarnach: Ah, grazie. Esiste una versione non-'reduce() '? – Randomblue
Non proprio un one-liner, ma i [itertools docs] (http://docs.python.org/py3k/library/itertools.html) hanno un'implementazione di powerset. – AdamKG