a = ['a', 'b', 'ab', 'abcd']
print([[x for x in a if len(x) == i] for i in set(len(k) for k in a)])
print([[x for x in a if len(x) == i + 1] for i in range(max(len(x) for x in a))
    ])
Python: split list of strings to a list of lists of strings by length with a nested comprehensions