I have a list made by strings, correctly cleaned (split(',') can be safely used), and correctly sorted depending on numbers. As a small example: l = ['C1', 'C1,C2', 'C2,C3', 'C3,C4', 'C4', 'C5', 'C5,C6', 'C6,C7', 'C7,C8', 'C8', 'C10', 'C10,C11', 'C11,C12', 'C12,C13', 'C13'] What I'm trying to achieve is to create as many sublists that start and end with single strings, that is: [ ['C1', 'C1,C2', 'C2,C3', 'C3,C4', 'C4'], ['C5', 'C5,C6', 'C6,C7', 'C7,C8', 'C8'], ['C10', 'C10,C11', 'C11,C12', 'C12,C13', 'C13'] ] I thought to add some logic like the following code, but I'm not sure if I'm on the correct way: tl = [] for i in l: # just get the variable val = i tl.append(val) # split by , val_split = len(i.split(',')) # check if the value is the first element of the list (C1) if val == l[0]: print(1, val) # check if the split of the character is longer than 2 (C1,C2) elif val_split > 1: print(2, val) # check is the split of the character siis equalt to 1 (C4) elif val_split == 1: # here the code should compare if the character is equal to the last value of the nested list. If yes go with teh next value (C5) if val != tl[-1]: print(3, val) else: print(4, val) Continue reading...