I\'m trying to populate a list with a for loop. This is what I have so far:
newlist = []
for x in range(10):
for y in range(10):
newlist.append(y
newlist = [list(range(10))] * 10
Or just nested list comprehension
[[x for x in 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.
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 should put a intermiate list to get another level
newlist = []
for x in range(10):
temp_list = []
for y in range(10):
temp_list.append(y)
newlist.append(temp_list)
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)]