A variant using `Take`. Take[list, #] & /@ Range@Length@list >{{a}, {a, b}, {a, b, c}, {a, b, c, d}} One using `NestList`: NestList[Most, list, Length@list - 1] >{{a, b, c, d}, {a, b, c}, {a, b}, {a}}