różne kombinacje wartości wektora

Przypuśćmy, że mam wektor n wartości, chcę uzyskać różne kombinacje jego wartości, na przykład: jeśli mam vect = [a, b, c], różne kombinacje, które chcę, to: [a, b, c] , [a, b], [a, c], [b, c], [a], [b], [c]

Zauważ, że na przykład [a, b] jest taki sam jak [b, a], więc nie muszę ich trzymać.