A[0] = N A[1] = N-1 ...
A[N-1] = 1
Теперь запишем цикл, в котором значение, присваиваемое очередному элементу, обозначается через Х:
for i in range(N):
A[i] = X
Однако не всё так просто: величина X должна изменяться при переходе к следующему элементу.
Определите, как меняется X: чему равно начальное значе-ние этой переменной, как она изменяется при переходе к слелующему элементу?
Можно записать цикл так:
X = N
for i in range(N):
A[i] = X X -= 1
А можно его значительно упростить, заметив, что при уве-личении номера элемента i на единицу значение X уменьшает-ся, причём тоже на единицу. Поэтому сумма i+X остаётся посто-янной! Её можно вычислить, зная, что для первого по счёту элемента она равна 0+N.
Выразите X из уравнения i + X = 0 + N.
В элемент с номером i записывается значение N – i, поэтому цикл можно записать так:
for i in range(N):
A[i] = N - i
Предположим, что массив A заполнен некоторыми значе-ниями. Попробуем увеличить все его элементы на единицу.
79 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Этот значит, что нужно заменить значение элемента A[i] на A[i]+1:
for i in range(N):
A[i] += 1
Определите, какие значения окажутся в массиве после выполнения фрагмента программы:
A = [6, 5, 4, 3, 2] N = len(A)
for i in range(N):
A[i] += i
Запишите фрагмент программы, который умножит все элементы массива на 2.
Запишите фрагмент программы, который умножит первый элемент массива на 1, второй – на 2, третий – на 3 и т.д.
Генераторы
Методы заполнения массивов, использующие цикл, работают в большинстве языков программирования. В языке Python есть особые возможности, которые позволяют решать многие задачи кратко и надёжно.
Например, две операции – создание и заполнение массива –можно объединить в одну с помощью генератора – выражения, напоминающего цикл:
A = [i for i in range(N)]
Как вы знаете, цикл for i in range(N) перебирает все значения i от 0 до N–1. Выражение перед словом for (в данном случае – i) – это то, что записывается в очередной элемент мас-сива для каждого i. В приведённом примере массив заполняет-ся значениями, которые последовательно принимает перемен-ная i, то есть при N=10 мы построим такой массив:
A = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
80 http://kpolyakov.spb.ru
05.04.2019 Информатика, 8 класс К.Ю. Поляков, Е.А. Еремин
Тот же результат можно получить, если использовать функ-
цию list для того, чтобы создать список из данных, которые получаются с помощью функции range:
Достарыңызбен бөлісу: |