combinaciones con longitud variable y sin repetición

¿Alguien puede sugerir una manera fácil de obtener todas las combinaciones sin repeticiones y con una longitud variable?

[0,1,2,3,4]

(2's): [0,1], [0,2], [0,3] ... [3,4]

(3's): [0,1,2], [0,1,3] ... [2,3,4]

(4's): [0,1,2,3], [0,1,2,4] ... [1,2,3,4]