Algoritmo para gerar (não muito) spanning definido em Python

Isso segue a partir desta pergunta:

Algoritmo para gerar o conjunto de abrangência

Dada essa entrada: [1,2,3,4]

Eu gostaria de gerar este conjunto de conjuntos em python:

[1] [2] [3] [4]
[1] [2] [3,4]
[1] [2, 3, 4]
[1] [2,3] [4]
[1,2] [3] [4]
[1,2] [3,4]
[1,2,3] [4]
[1,2,3,4]

Assim, ao contrário da pergunta anterior, a ordem da lista é mantid

Idealmente, o código funcionaria para n itens na lista

Muito obrigado

EDIT 2: Alguém poderia me aconselhar sobre como fazer isso se a entrada original for uma string em vez de uma lista (onde cada palavra na string se torna um item em uma lista). Obrigado

EDIT: adicionado [1] [2, 3, 4] Desculpe pelo erro

questionAnswers(6)

yourAnswerToTheQuestion