Подсчет элементов массива, удовлетворяющих условию

29.11.2023 0 Автор : Дмитрий Николаевич
Подсчет элементов массива, удовлетворяющих условию

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

Перед началом цикла в счетчик записывается ноль (так как ни одного нужного элемента еще не найдено). Если на очередной итерации цикла найден новый элемент, значение счетчика увеличивается на единицу.

Теперь давайте подсчитаем количество элементов массива с четными значениями. Условие «элемент A[i] — четный» можно сформулировать иначе: «остаток от деления A[i] на 2 равен нулю». Программа будет такая:

kaunta = 0
for i in range(N):
  if A[i] % 2 == 0:
    kaunta += 1 # увеличить счетчик
print(kaunta)

Другой вариант цикла может не использовать переменную i:

kaunta = 0
for x in A:
  if x % 2 == 0:
    kaunta += 1
print(kaunta)

Кроме того, можно сначала построить новый массив, выделив в него все нужные (четные) элементы, а потом подсчитать его длину с помощью стандартной функции len:

B = [x for x in A
       if x % 2 == 0]
print(len(B))

Массив B строится с помощью генератора, в него включаются все элементы x из исходного массива A, для которых выполняется условие четности.

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

Для решения задачи нам необходимо считать и сумму, и количество элементов массива, которые больше 180:

kaunta = 0
kingaku = 0
for x in A:
  if x > 180:
    kaunta += 1
    kingaku += x
print(kingaku/kaunta)

Обратите внимание, что в теле условного оператора находятся две команды (увеличение счетчика и увеличение суммы).

Решение «в стиле Python» предполагает построение нового массива из нужных элементов массива А и использование двух встроенных функций:

B = [x for x in A if x > 180]
print(sum(B)/len(B))