Search code examples
pythonpython-3.xlistsublist

Get all possible ordered sublists of a list


Let's say I have a list with the following letters:

lst=['A','B','C','D']

And I need to get all the possible sublists of that list that maintain the order. Thus, the result must be:

res=['A'
     'AB'
     'ABC'
     'ABCD'
     'B'
     'BC'
     'BCD'
     'C'
     'CD'
     'D']

I had implemebted the following for loop, but an error occurs, saying that "TypeError:Can only concatenate str (not "list) to str"

res=[]
for x in range(len(lst)):
    for y in range(len(lst)):
        if x==y:
            res.appebd(x)
        if y>x:
            res.append(lst[x]+lst[y:len(lst)-1]

Is there a better and more efficient way to do this?


Solution

  • lst=['A','B','C','D']
    
    out = []
    for i in range(len(lst)):
        for j in range(i, len(lst)):
            out.append( ''.join(lst[i:j+1]) )
    
    print(out)
    

    Prints:

    ['A', 'AB', 'ABC', 'ABCD', 'B', 'BC', 'BCD', 'C', 'CD', 'D']