Python append lists into lists
Question:
I am trying to write a function that goes through a matrix. When a criteria is met, it remembers the location.
I start with an empty list:
locations = []
As the function goes through the rows, I append the coordinates using:
locations.append(x)
locations.append(y)
At the end of the function the list looks like so:
locations = [xyxyxyxyxyxy]
My question is:
Using append, is it possible to make the list so it follows this format:
locations = [[[xy][xy][xy]][[xy][xy][xy]]]
where the first bracket symbolizes the locations of a row in the matrix and each location is in it’s own bracket within the row?
In this example the first bracket is the first row with a total of 3 coordinates, then a second bracket symbolizing the 2nd row with another 3 coordinates.
Answers:
Try this:
locations = [[]]
row = locations[0]
row.append([x, y])
Instead of
locations.append(x)
You can do
locations.append([x])
This will append a list containing x.
So to do what you want build up the list you want to add, then append that list (rather than just appending the values). Something like:
##Some loop to go through rows
row = []
##Some loop structure
row.append([x,y])
locations.append(row)
Try something like:
def f(n_rows, n_cols):
locations = [] # Empty list
for row in range(n_rows):
locations.append([]) # 'Create' new row
for col in range(n_cols):
locations[row].append([x, y])
return locations
Test
n_rows = 3
n_cols = 3
locations = f(n_rows, n_cols)
for e in locations:
print
print e
>>>
[[0, 0], [0, 1], [0, 2]]
[[1, 0], [1, 1], [1, 2]]
[[2, 0], [2, 1], [2, 2]]
simple example
locations = []
for x in range(3):
row = []
for y in range(3):
row.append([x,y])
locations.append(row)
print locations
result:
[[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]], [[2, 0], [2, 1], [2, 2]]]
If you don’t go through a matrix and just want to embed some lists on a list:
groupA = [1,2,3]
groupB = ['a','b','c']
pair = []
for x in range(3):
pair.append([groupA[x],groupB[x]])
>>>:
[[1, 'a'], [2, 'b'], [3, 'c']]
I am trying to write a function that goes through a matrix. When a criteria is met, it remembers the location.
I start with an empty list:
locations = []
As the function goes through the rows, I append the coordinates using:
locations.append(x)
locations.append(y)
At the end of the function the list looks like so:
locations = [xyxyxyxyxyxy]
My question is:
Using append, is it possible to make the list so it follows this format:
locations = [[[xy][xy][xy]][[xy][xy][xy]]]
where the first bracket symbolizes the locations of a row in the matrix and each location is in it’s own bracket within the row?
In this example the first bracket is the first row with a total of 3 coordinates, then a second bracket symbolizing the 2nd row with another 3 coordinates.
Try this:
locations = [[]]
row = locations[0]
row.append([x, y])
Instead of
locations.append(x)
You can do
locations.append([x])
This will append a list containing x.
So to do what you want build up the list you want to add, then append that list (rather than just appending the values). Something like:
##Some loop to go through rows
row = []
##Some loop structure
row.append([x,y])
locations.append(row)
Try something like:
def f(n_rows, n_cols):
locations = [] # Empty list
for row in range(n_rows):
locations.append([]) # 'Create' new row
for col in range(n_cols):
locations[row].append([x, y])
return locations
Test
n_rows = 3
n_cols = 3
locations = f(n_rows, n_cols)
for e in locations:
print
print e
>>>
[[0, 0], [0, 1], [0, 2]]
[[1, 0], [1, 1], [1, 2]]
[[2, 0], [2, 1], [2, 2]]
simple example
locations = []
for x in range(3):
row = []
for y in range(3):
row.append([x,y])
locations.append(row)
print locations
result:
[[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1], [1, 2]], [[2, 0], [2, 1], [2, 2]]]
If you don’t go through a matrix and just want to embed some lists on a list:
groupA = [1,2,3]
groupB = ['a','b','c']
pair = []
for x in range(3):
pair.append([groupA[x],groupB[x]])
>>>:
[[1, 'a'], [2, 'b'], [3, 'c']]