```
def all_subsets(s):
    if len(s) == 1: return [[], s]
    else:
        sets = all_subsets(s[:-1])
        for e in sets:
            return sets + [e + [s[-1]]]

```

I've tried the above code and it only returns [[], [1], [2], [3]]

So I've accidentally tried the one liner return statement as below:

```
def all_subsets(s):
    if len(s) == 1: return [[], s]
    else:
        sets = all_subsets(s[:-1])
        return sets + [e + [s[-1]] for e in sets]

```

And it worked. I can't understand how using for loop in the return statement makes this code work; PLEASE help me understand how it's working, because I've tried running it on the visualizer, and I still don't understand. 

AND if you can be so kind as to make my FIRST code work without using the one liner return statement, if it is possible.

A MILLION GRATITUDES IN ADVANCE