So, nasty recursive code with part of it wrapped in a list comp... wonderful.
Let's try breaking that line up:
So if you ask for the power set of [1,2,3,4] it gives the power set of [2,3,4].
The second part is the first character in the sequence + the previous expression.
So if you ask for the powerset of [1,2,3,4] it gives you [1] + each set in the powerset of [2,3,4].
So to try once again to put this into words:
""" The powerset of any sequence is equal to (the powerset of the sequence without the first entry) + (the first entry + (each set in the powerset of the sequence without the first entry))."""
Not sure if that is any clearer. I tried. =P
Let's try breaking that line up:
power_set(l[1:]) + [[l[0]] + x for x in power_set(l[1:])]We have:
power_set(l[1:])and
[[l[0]] + x for x in power_set(l[1:])]The first part is easy.
power_set(l[1:])
is the powerset of the current sequence without the first entry.So if you ask for the power set of [1,2,3,4] it gives the power set of [2,3,4].
The second part is the first character in the sequence + the previous expression.
So if you ask for the powerset of [1,2,3,4] it gives you [1] + each set in the powerset of [2,3,4].
So to try once again to put this into words:
""" The powerset of any sequence is equal to (the powerset of the sequence without the first entry) + (the first entry + (each set in the powerset of the sequence without the first entry))."""
Not sure if that is any clearer. I tried. =P