Списки в списках: двумерные массивы
Предположим также, что предопределенный символ с именем EMPTY
обозначает пустое поле на шахматной доске.
Итак, если мы хотим создать список списков, представляющих всю шахматную доску, это можно сделать следующим образом:
board = []
for i in range(8):
row = [EMPTY for i in range(8)]
board.append(row)
Примечание:
- внутренняя часть цикла создает строку, состоящую из восьми элементов (каждый из которых равен
EMPTY
), и добавляет ее в списокboard
; - внешняя часть повторяет это восемь раз;
- Всего список
board
состоит из 64 элементов (все равныEMPTY
)
Эта модель идеально имитирует настоящую шахматную доску, которая на самом деле представляет собой список из восьми элементов, состоящих из отдельных строк. Подведем итог нашим наблюдениям:
- элементы строк - клетки, по восемь в каждой строке;
- элементы шахматной доски - это строки, по восемь на каждой доске.
Переменная board
теперь представляет собой двумерный массив. По аналогии с алгебраическими терминами ее также называют матрицей.
Поскольку списки могут быть вложенными, мы можем сократить создание доски следующим образом:
board = [[EMPTY for i in range(8)] for j in range(8)]
Внутренняя часть создает строку, а внешняя часть создает список строк.