Basically, i want a list, which contains an increasing number of lists, (which I’ve now getten the answer to):

l = [] for i in range(3): l.extend([[i] for _ in range(i+1)]) print(l)

output: [[0], [1], [1], [2], [2], [2]]

But i want to ‘group’ the numbers together, so the output is: [[[0]], [[1], [1]], [[2], [2], [2]]]

## Answer

## New answer

Now that you’ve provided a clear example of your desired output,

In [9]: top = 1 # starting number In [10]: num_rows = 4 In [11]: [[[top + i] for _ in range(i + 1)] for i in range(num_rows)] Out[11]: [[[1]], [[2], [2]], [[3], [3], [3]], [[4], [4], [4], [4]]]

## Old answer

Your three different example outputs all seem to contradict each other in various ways, and as such your question is very confusing, hence the vastly different results produced by the current answers.

In [1]: top = 4 # starting number, at the top of the pyramid In [2]: num_rows = 5 In [3]: pyramid = [[(top + i) for _ in range(i + 1)] for i in range(num_rows)] In [4]: pyramid Out[4]: [[4], [5, 5], [6, 6, 6], [7, 7, 7, 7], [8, 8, 8, 8, 8]] In [5]: for row in pyramid: ...: print(*row) ...: 4 5 5 6 6 6 7 7 7 7 8 8 8 8 8

If also want to print them centered:

In [7]: width = 2 * num_rows - 1 In [8]: print("n".join(" ".join(map(str, row)).center(width) for row in pyramid)) 4 5 5 6 6 6 7 7 7 7 8 8 8 8 8