How to create and fill a list of lists in a for loop

Or just nested list comprehension

[[x for x in range(10)] for _ in range(10)]

Alternatively, you only need one loop and append range(10).

newlist = []
for x in range(10):
    newlist.append(list(range(10)))

Or

newlist = [list(range(10)) for _ in range(10)]

You were close to it. But you need to append new elements in the inner loop to an empty list, which will be append as element of the outer list. Otherwise you will get (as you can see from your code) a flat list of 100 elements.

newlist = []
for x in range(10):
    innerlist = []
    for y in range(10):
        innerlist.append(y)
    newlist.append(innerlist)

print(newlist)

See the comment below by Błotosmętek for a more concise version of it.


You can use this one line code with list comprehension to achieve the same result:

new_list = [[i for i in range(10)] for j in range(10)]