Find all list permutations of splitting a string in Python

后端 未结 6 2326
迷失自我
迷失自我 2020-12-30 06:42

I have a string of letters that I\'d like to split into all possible combinations (the order of letters must be remain fixed), so that:

s = \'monkey\'
         


        
6条回答
  •  余生分开走
    2020-12-30 06:43

    Consider more_itertools.partitions:

    Given

    import more_itertools as mit
    
    
    s = "monkey"
    

    Demo

    As-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 some string joining:

    [list(map("".join, x)) for x in mit.partitions(s)]
    

    Output

    [['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.

提交回复
热议问题