Подсчёт и фильтрация
Второй шаблон — подсчёт: сколько элементов списка удовлетворяют условию? Он похож на сложение, но вместо значения вы прибавляете 1, и только тогда, когда так решает if:
temperatures = [18, 24, 27, 15, 31, 22, 29]
hot_days = 0
for temperature in temperatures:
if temperature >= 25:
hot_days += 1
print("Жарких дней:", hot_days)Жарких дней: 3Счётчик hot_days начинается с 0, перед циклом. Цикл смотрит на каждую температуру, а if решает, считать ли её. Строка hot_days += 1 выполняется только для 27, 31 и 29, поэтому в конце счётчик равен 3. Обратите внимание, что у hot_days += 1 двойной отступ: эта строка принадлежит if, который находится внутри цикла. Результат, как и раньше, выводят после цикла.
Иногда хочется знать не только сколько, но и какие именно. Тогда начните с пустого списка и добавляйте в него каждый подходящий элемент с помощью .append():
temperatures = [18, 24, 27, 15, 31, 22, 29]
hot = []
for temperature in temperatures:
if temperature >= 25:
hot.append(temperature)
print("Температуры в жаркие дни:", hot)
print("Жарких дней:", len(hot))Температуры в жаркие дни: [27, 31, 29]
Жарких дней: 3Так вы строите новый список из нужных элементов, а исходный остаётся прежним. А len() сообщает, сколько элементов в новом списке.
Задание
- 1
Список
scoresхранит баллы за тест. Тест сдан при 50 баллах и больше. Посчитайте учеников, которые сдали тест: создайте переменнуюpassedсо значением0, пройдите поscoresциклом и для каждого балла не меньше 50 увеличивайтеpassedна 1. После цикла выведите результат с помощьюprint("Сдали:", passed). Вывод:Сдали: 5. - 2
Теперь соберите ещё и баллы ниже 50: перед циклом создайте пустой список
failed, а внутри цикла добавляйте в него каждый балл ниже 50 с помощью.append()(подойдётelse). После цикла выведите его с помощьюprint("Провалили:", failed). Вывод:Провалили: [45, 38, 29].