solutions = []
solutions.append([])
for elem in seed:
    newPartials = []
for partial in solutions:
    newPartial = partial[:]
newPartial.append(elem)
newPartials.append(newPartial)
solutions.extend(newPartials)
Most efficient way to generate "ordered subsets" of a sequence