Two Dimensional Lists
CT04b
-
Define the term ‘array’
-
Define the term ‘list’
-
Give characteristics of one-dimensional and two-dimensional data structures
-
Use indexing to access any item in a two-dimensional structure
-
Use ‘for’ to iterate over every item in a two-dimensional structure
Lists
CT04b
Previously, you learned about lists and arrays.
An array is a data structure that allows you to store multiple values under a single identifier.
Python uses lists to implement arrays.
Lists are accessed using an index, starting with 0.
For example, this list contains a set of integers.
list[5] contains 93.
Lists can be iterated (looped through, from front to back).
list
23 | 42 | 12 | 16 | 75 | 93 | 13 | 66 | 27 | 92 |
Tables
CT04b
In the last lesson you learned that presenting information in a table format makes output more user friendly.
Programmers also use tables to store information.
In Python, you can create a structure that resembles a table by nesting a list inside a list.
This means creating a list in which each item is also a list.
This is referred to as a two-dimensional list.
In this example, each row in the table is represented by one list and the whole table is represented by an outer list.
table
16 | 54 | 12 |
65 | 32 | 98 |
45 | 84 | 78 |
48 | 59 | 34 |
Indexing a table
CT04b
You can access the individual elements of a two-dimensional list using the [ ].
In order to access a single element, you need to choose which row to access, and then which column.
For example, the cell in the table holding 98 is accessed by:
table
16 | 54 | 12 |
65 | 32 | 98 |
45 | 84 | 78 |
48 | 59 | 34 |
table [1] [2]
Row
number
Column
number
Activity 1
CT04b
Complete the table to show that you understand the use of indexing in a 2-dimensional data structure (list).
theHouse = [["oven", "hob", "sink", "toaster", "refrigerator"],
["bed", "mattress", "table", "mirror", "cupboard"],
["sofa", "television", "chair", "carpet", "foot stool"],
["shower", "bath tub", "toilet", "sink", "towel rail"]]
theNumbers = [[10, 20, 30, 40, 50, 60, 70],
[11, 22, 33, 44, 55, 66, 77],
[111, 222, 333, 444, 555, 666, 777]]
theNumbers[2][3]
444
theHouse[0][1]
bed
theHouse[0][1]
hob
theHouse[0][0]
oven
Statement
Output
theNumbers[0][3]
40
theNumbers[1][6]
77
theNumbers[2][1]
222
len(theNumbers)
3
len(theHouse)
4
len(theNumbers[1])
7
theHouse[0]
['oven','hob','sink','toaster','refigerator']
theNumbers[1]
[11, 22, 33, 44, 55, 66, 77]
Defining a table
CT04b
Creating a two-dimensional list in Python is straightforward.
This is the code to create the table shown below.
table = [[16, 54, 12], [65, 32, 98], [45, 84, 78], [48, 59, 34]]
table
16 | 54 | 12 |
65 | 32 | 98 |
45 | 84 | 78 |
48 | 59 | 34 |
Row 0
Row 1
Row 2
Row 3
This set is the first row in the table, accessed with table[0]
Row 1, column 2 so accessed using table[1] [2]
Activity 2
CT04b
What do you think the code will do?
What output do you think it will produce?
# --- Global Variables ---
shelves = [["soda", "sweets", "crisps"],
["corn", "peas", "beans"],
["cereal", "oatmeal", "granola"]]
# --- Main Program ---
print(shelves[1][1])
print(shelves[2][0])
print(f"My favourites are {shelves[0][2]} and {shelves[2][1]}." )
Activity 2
CT04b
# --- Global Variables ---
shelves = [["soda", "sweets", "crisps"],
["corn", "peas", "beans"],
["cereal", "oatmeal", "granola"]]
# --- Main Program ---
print(shelves[1][1])
print(shelves[2][0])
print(f"My favourites are {shelves[0][2]} and {shelves[2][1]}.")
Load the code ‘Activity-2-PRIMM-Student.py’ into Thonny and run it.
Did it do what you thought it would do?
Activity 2
CT04b
# --- Global Variables ---
shelves = [["soda", "sweets", "crisps"],
["corn", "peas", "beans"],
["cereal", "oatmeal", "granola"]]
# --- Main Program ---
print(shelves[1][1])
print(shelves[2][0])
print(f"My favourites are {shelves[0][2]} and {shelves[2][1]}.")
What would happen if the indices on line 9 were reversed?
What would be printed if this line was added?
What would be printed if this line was added?
print(shelves[1])
print(shelves[-2][-1])
Iterating a 2D list
CT04b
You iterate a table in the same way that you iterate a list.
You use a for loop to look at each sub-list (row) in turn.
table
16 | 54 | 12 |
65 | 32 | 98 |
45 | 84 | 78 |
48 | 59 | 34 |
for row in table:
print(row)
for row in table:
for item in row:
print(item)
[16, 54, 12]
[65, 32, 98]
[45, 84, 78]
[48, 59, 34]
16
54
12
65
32
98
45
84
78
48
59
34
Records
CT04b
Tables are commonly used to store records.
# table headers: Name, Assignments, Lates, Attendance
classData = [["Alice", 10, 1, 0.89],
["Bob", 12, 0. 0.93],
["Charley", 9, 2, 0.87],
["Daisy", 12, 1, 0.99],
["Ellis", 11, 0, 0.93]]
A record is a row in a table that can contain different data types.
This approach is commonly used to create a database where each record relates to one person or individual item.
For example a two-dimensional array can be used to store information about students in a class.
Review
CT04b
Define the term ‘array’.
- A data structure where all elements are the same data type.
Define the term ‘list’.
- A data structure where elements can be different types.
Give characteristics of one-dimensional and two-dimensional data structures.
- One-dimensional structures are lists and arrays.
- Two-dimensional structures are tables, created by nesting 1-D structures together.
Use indexing to access any item in a two-dimensional structure.
Use [ ] [ ] to access specific rows and columns.
Use ‘for’ to iterate over every item in a two-dimensional structure.
Nested for loops allow you to access every single element in a table.
ct04b 2D Lists
By David James
ct04b 2D Lists
- 391