Module (89%)
Section (14%)

Списки в списках

Списки могут состоять из скаляров (а именно чисел) и элементов гораздо более сложной структуры (Вы уже видели такие примеры, как строки, логические значения или даже другие списки в предыдущих заключающих уроках раздела). Давайте подробнее рассмотрим случай, когда элементы списка являются просто списками.

Такие массивы мы часто находим в своей жизни. Вероятно, лучший пример этого - шахматная доска.

Шахматная доска состоит из строк и столбцов. Всего восемь строк и восемь столбцов. Каждый столбец помечен буквами от A до H. Каждая строка отмечена цифрой от одного до восьми.

Расположение каждой клетки определяется парами букв и цифр. Таким образом, мы знаем, что левый нижний угол доски (с белой ладьей) - это А1, а противоположный угол - Н8.


Предположим, что мы можем использовать выбранные числа для представления любой шахматной фигуры. Мы также можем предположить, что каждая строка на шахматной доске представляет собой список.

Посмотрите на код ниже:

row = [] for i in range(8): row.append(WHITE_PAWN)

Он создает список из восьми элементов, представляющих вторую строку шахматной доски - ту, которая заполнена пешками (предположим, что WHITE_PAWN - предопределенный символ, представляющий белую пешку).


Тот же эффект может быть достигнут с помощью генератора списка, специального синтаксиса, используемого Python для заполнения огромных списков.

Генератор списка на самом деле является списком, но создается на ходу во время выполнения программы и не описывается статически.

Посмотрите на код:

row = [WHITE_PAWN for i in range(8)]

Часть кода, помещенная в скобки, указывает:

  • данные, которые будут использоваться для заполнения списка (WHITE_PAWN)
  • выражение, определяющее, сколько раз данные встречаются внутри списка (for i in range(8))

Взгляните на еще несколько примеров генерирования списка:

Пример #1:

squares = [x ** 2 for x in range(10)]

Код создает список из десяти элементов, заполненный квадратами из десяти целых чисел, начиная с нуля (0, 1, 4, 9, 16, 25, 36, 49, 64, 81).

Пример #2:

twos = [2 ** i for i in range(8)]

Код создает массив из восьми элементов, содержащий первые восемь степеней двойки (1, 2, 4, 8, 16, 32, 64, 128).

Пример #3:

odds = [x for x in squares if x % 2 != 0 ]

Код составляет список только из нечетных элементов списка squares.


Code

{{ dockerServerErrorMsg }} ×
{{ errorMsg }} ×
{{ successMsg }} ×