I Know Where Your Cat Lives
2D Lists
We already know that lists can contain other lists
a_list = [[1], [2, 3], [4, 5, 6]]
- 2D lists are lists containing lists with additional restrictions
- All sub lists are the same size and all elements are the same type
So the above lists is not a 2D list, but the following is
a_list = [[1, 2, 3], [4, 5, 6]]
- There are two sublists, both of length 3 and both only containing ints
- In memory, a 2D list looks more like the way we defined it above
But working with them can be simplified if we think of them as a grid, or matrix
a_list = [[1, 2, 3], [4, 5, 6]]
- The grid consists of rows and columns
So to access an element of the 2D you must specify the row and column of the element
row = 1 col = 2 print(a_list[row][col])
Rows
Because each sub list is a row, can get an entire row of a 2D list with array access
a_row = a_list[1]
Can also get the number of columns by getting the length of a row
num_cols = len(a_list[0])
And can use loops to iterate over a row of the list
row = 1 for col in range(len(a_list[0])): print(a_list[row][col])
Columns
Because each sub-list is a row, the number of rows is the length of the array
num_rows = len(a_list)
Iterating over a column similar to iterating over a row
col = 1 for row in range(len(a_list)): print(a_list[row][col])
Getting a column is a little trickier, you can’t get a column with a single array access operation, instead need to iterate
a_col = [] col = 1 for row in range(len(a_list)): a_col.append(a_list[row][col])