Python. Вложенные списки (Двумерные массивы)

11.2.3.4 создавать вложенные списки
11.2.3.5 вводить элементы вложенных списков с клавиатуры

Python. Вложенные списки (2D массивы)


Вложенный список - список, элементы которого тоже являются списком.


Списки могут быть вложены на любом уровне. Мы будем рассматривать только двумерные (2D) списки.

Двумерный список — структура данных, которая может быть представлена ​​в виде квадратной таблицы: 

Каждый элемент списка также представлен списком (вложенным списком).

Чтобы указать на элемент в двумерном списке, необходимо сначала определить индекс элемента списка (строки), а затем определить индекс вложенного элемента списка (столбца).

Например, чтобы получить значение 8 из таблицы, нужно написать имя списка lst2D, затем указать индекс элемента списка lst2D[1], затем указать индекс элемента во вложенном списке lst2D[1][2].

lst2D[1][2] = 8
lst2D[2][0] = 3

Вопрос. Определите результат фрагмента кода: print(lst2D[0][3], lst2D[2][2], lst2D[-1][-3])
  • Ответ. 10 9 6

Как создать двумерный список заполненный нулями?

lst2D = [[0] * 10 for i in range(5)] 

Output:
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

Как заполнить двумерные список размером n*m с клавиатуры?

Если мы хотим ввести каждое значение элемента в новой строке:

lst2D = [] # создаём пустой список
for i in range(3):
    row = [] # создаём пустой список для новой строки в двумерном списке
    for j in range(4):
        row.append(input()) # каждый элемент вводится отдельно
    lst2D.append(row) # добавляем собранную строку элементом в список list2D

Если мы хотим ввести каждую строку элементов в строку:

lst2D = []
for i in range(3):
    lst2D.append(input().split()) # ввод значений строки через пробел

Если мы хотим ввести каждую строку целых чисел в одну строку:

lst2D = []
for i in range(3):
    lst2D.append([int(x) for x in input().split()]) # перевод каждой строки в целое число

Как обработать каждый элемент матрицы?

Итерация по индексам. Мы можем получить и изменить значение для каждого элемента

for i in range(n): # n строк
    for j in range(m): # m столбцов
        lst2D[i][j] = ... # изменить значение элемента i-строки и j-столбца

Итерация по элементам. Мы можем получить значение для каждого элемента

for row in lst2D: # итерирование каждого элемента в списке
    for col in row: # итерирация каждого элемента во вложенном списке
        print(col)

Как вывести все элементы в табличном виде?

for i in range(n):  # n строк
    for j in range(m): # m столбцов
        print(lst2D[i][j], end='\t') # вывести с табличном виде
    print()

или

for row in lst2D: # итерирование каждого элемента в списке
    for col in row: # итерирация каждого элемента во вложенном списке
        print(f"{col:5}", end='') # использование f-string для выравнивания
    print()

Вопросы:

1. Объясните, что значит "Двумерный список".

2. Объясните основную идею обработки элементов двумерного списка.

Упражнения:

Ex 1. Определите результат фрагмента кода

Ex 2. Заполните пропуски в программе

Задачи:

 

 

Категория: Algorithms | Добавил: bzfar77 (22.02.2025)
Просмотров: 70 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar