Consider more_itertools.partitions :
Given
import more_itertools as mit s = "monkey"
demonstration
As it is:
list(mit.partitions(s)) #[[['m', 'o', 'n', 'k', 'e', 'y']], # [['m'], ['o', 'n', 'k', 'e', 'y']], # [['m', 'o'], ['n', 'k', 'e', 'y']], # [['m', 'o', 'n'], ['k', 'e', 'y']], # [['m', 'o', 'n', 'k'], ['e', 'y']], # [['m', 'o', 'n', 'k', 'e'], ['y']], # ...]
After attaching some line:
[list(map("".join, x)) for x in mit.partitions(s)]
Exit
[['monkey'], ['m', 'onkey'], ['mo', 'nkey'], ['mon', 'key'], ['monk', 'ey'], ['monke', 'y'], ['m', 'o', 'nkey'], ['m', 'on', 'key'], ['m', 'onk', 'ey'], ['m', 'onke', 'y'], ['mo', 'n', 'key'], ['mo', 'nk', 'ey'], ['mo', 'nke', 'y'], ['mon', 'k', 'ey'], ['mon', 'ke', 'y'], ['monk', 'e', 'y'], ['m', 'o', 'n', 'key'], ['m', 'o', 'nk', 'ey'], ['m', 'o', 'nke', 'y'], ['m', 'on', 'k', 'ey'], ['m', 'on', 'ke', 'y'], ['m', 'onk', 'e', 'y'], ['mo', 'n', 'k', 'ey'], ['mo', 'n', 'ke', 'y'], ['mo', 'nk', 'e', 'y'], ['mon', 'k', 'e', 'y'], ['m', 'o', 'n', 'k', 'ey'], ['m', 'o', 'n', 'ke', 'y'], ['m', 'o', 'nk', 'e', 'y'], ['m', 'on', 'k', 'e', 'y'], ['mo', 'n', 'k', 'e', 'y'], ['m', 'o', 'n', 'k', 'e', 'y']]
Install via > pip install more_itertools .