# Refresher: List 3 ## Nested List ### Introduction - A nested list in Python is a list that can contain other lists as elements. - It allows you to create a two-dimensional structure, also known as a 2D list, where each element in the outer list can be a list itself. **Code**: ```python maths = [1, 1, 1] science = [2, 2, 2] history = [3, 3, 3] subjects = [maths, science, history] print(subjects) ``` **Output**: ```python [[1, 1, 1], [2, 2, 2], [3, 3, 3]] ``` **Explanation of code**: - Three separate lists, `maths`, `science`, and `history`, are created. - These lists are then combined into a single list named `subjects`. - The `print(subjects)` statement displays the resulting nested list. --- ## Indexing in a 2D List - Indexing in a 2D list involves accessing elements using two indices: one for the outer list (row) and another for the inner list (column). **Code**: ```python print(subjects[0][2]) # row major form print(subjects) ``` **Output**: ```python 1 [[1, 1, 1], [2, 2, 2], [3, 3, 3]] ``` **Explanation of code**: - The expression `subjects[0][2]` accesses the element in the first row (index 0) and the third column (index 2) of the 2D list. - The second `print(subjects)` statement displays the entire 2D list. --- ## Iterating a 2D List ### Example 1 **Code**: ```python for row_index in range(len(subjects)): for col_index in range(len(subjects[row_index])): print(subjects[row_index][col_index], end = ' ') ``` **Output**: ```python 1 1 1 2 2 2 3 3 3 ``` **Explanation of code**: - Nested loops iterate through each element of the 2D list, printing them horizontally. ### Example 2 **Code**: ```python for row_index in range(len(subjects)): for col_index in range(len(subjects[row_index])): print(subjects[row_index][col_index], end=' ') print() ``` **Output**: ```python 1 1 1 2 2 2 3 3 3 ``` **Explanation of code**: - Similar to Example 1, but with an additional `print()` to create a new line after each row. ### Example 3 **Code**: ```python for col_index in range(len(subjects[0])): for row_index in range(len(subjects)): print(subjects[row_index][col_index], end = ' ') print() ``` **Output**: ```python 1 2 3 1 2 3 1 2 3 ``` **Explanation of code**: - This example transposes the 2D list by iterating through columns first and then rows. --- ### Input in a 2D List ### Example **Code**: ```python def take_list_as_input(): li = list(map(int, input().split())) return li a = [] for i in range(3): a.append(take_list_as_input()) print(a) ``` **Output**: ```python 12 13 14 45 46 47 34 35 36 [[12, 13, 14], [45, 46, 47], [34, 35, 36]] ``` **Explanation of code**: - The `take_list_as_input()` function reads a line of space-separated integers and converts them into a list. - The loop collects three such lists to create a 2D list named `a`. ### Row Wise Sum **Code**: ```python def take_list_as_input(): li = list(map(int, input().split())) return li a = [] for i in range(3): a.append(take_list_as_input()) print(a) for row_index in range(len(a)): row_sum = sum(a[row_index]) print(row_sum) ``` **Output**: ```python 1 1 1 2 2 2 3 3 3 [[1, 1, 1], [2, 2, 2], [3, 3, 3]] 3 6 9 ``` **Explanation of code**: - Calculates and prints the sum of each row in the 2D list. --- ## Matrix Addition **Code**: ```python a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] b = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] c = [] for row_index in range(len(a)): temp = [] for col_index in range(len(a[row_index])): temp.append(a[row_index][col_index] + b[row_index][col_index]) c.append(temp) print(c) ``` **Output**: ```python [[2, 4, 6], [8, 10, 12], [14, 16, 18]] ``` **Explanation of code**: - Performs matrix addition on two 2D lists (`a` and `b`) and stores the result in the list `c`.