def all_subsets(lst):
    """
    Iteratively finds all possible subsets of a list
    (including the trivial and null subsets)

    >>> all_subsets([1,2,3])
    [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
    """
    results = [[]]
    while lst:
        results += [q + [lst[0]] for q in results]
        lst.pop(0)
    return sorted(results,key=len)