#python #циклы
matrix = [[[0]*5] for _ in range(5)]
есть такое выражение, создает пять таких элементов 0 0 0 0 0. Кто может объяснить
саму механику создания, чем проще тем лучше.
К примеру
for x in range(5):
print (x)
range(5) - это 0,1,2,3,4
и для каждого значения начиная с первого (0) выполняется действие print(x) (выводит
на экран текущее значение, в данном случае 0), после чего берется следующее значение,
пока они не закончатся. в итоге на экране мы имеем:
0
1
2
3
4
Желательно в таком ключе объяснение, а то я не понимаю суть этого выражения, что
означает это нижнее подчеркивание?
Ответы
Ответ 1
Нижнее подчёркивание это такое же допустимое имя переменной, как и x, например. То есть, с точки зрения интерпретатора, выражения for _ in range(5) и for x in range(5) ничем не отличаются и будут выполнятся одинаково. Просто по традиции нижнее подчёркивание используют для того, чтобы показать, что эта переменная нигде дальше не используется. То есть мы используем какую-то синтаксическую конструкцию, в которой требуется создать новую переменную, но нам нужна не эта переменная, а какие-то другие эффекты от данной синтаксической конструкции. Выражение for _ in range(5) обычно используется просто для того, чтобы повторить что-то 5 раз. На каждой итерации переменная _ будет принимать последовательно значения 0, 1, 2, 3, 4, но нам эти значения не нужны, нам нужно только чтобы произошло пять итераций. Поэтому мы и даём имя переменной _, так как это традиционное обозначение ненужной переменной. Теперь относительно того, что вообще происходит в вашем выражении. Само выражение вида [что-то for переменная in последовательность] - это так называемое списковое включение (в оригинале - list comprehension). На самом деле оно просто представляет из себя сокращённый синтаксис такого цикла: res = [] for переменная in последовательность: res.append(что-то) Умножение массива на число создаёт массив, в котором исходный массив повторён несколько раз. Соответственно, [0]*5 - это всего лишь краткая запись для [0, 0, 0, 0, 0] Соответственно, с учётом вышесказанного, ваше выражение полностью эквивалентно такому коду: matrix = [] for _ in range(5): matrix.append([0, 0, 0, 0, 0])Ответ 2
Нижним подчеркиванием обычно обозначается переменная, имя которой нам не важно, так как мы ее не используем. Как можно заметить, в строке matrix = [[[0]*5] for _ in range(5)] Значение _ нигде не используется, просто в результате каждому элементу в соответствие ставится массив из 5 элементов.
Комментариев нет:
Отправить комментарий