Conjunto de todos los subconjuntos

En Python2 podría usar

def subsets(mySet): return reduce(lambda z, x: z + [y + [x] for y in z], mySet, [[]]) 

para encontrar todos los subconjuntos de mySet . Python 3 ha eliminado reduce .

¿Qué sería una reescritura igualmente concisa de esto para Python3?

Aquí hay una lista de varias implementaciones posibles del conjunto de potencias (el conjunto de todos los subconjuntos) del algoritmo en Python. Algunos son recursivos, algunos son iterativos, algunos de ellos no usan reduce . Un montón de opciones para elegir!

La función reduce() siempre puede ser reemplazada por un bucle for . Aquí hay una implementación en Python de 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 

(A diferencia de la versión incorporada de python de reduce() , esta versión no permite pasar None como parámetro de start ).

El código especial de este código con los parámetros que usted pasó para reduce() le da

 def subsets(my_set): result = [[]] for x in my_set: result = result + [y + [x] for y in result] return result